我想将仅包含一个函数的程序集文件与从中生成的对象文件链接起来。我想知道如何在 MASM 中创建 .obj 文件,我还需要知道如何创建这样的函数。这对于将两个整数相加的函数来说是否足够?
intadd PROC int1:DWORD int2:DWORD
mov eax, int1
mov ebx, int2
add eax, ebx
intadd ENDP
如果我创建并链接 obj 文件,我可以这样做吗
int x = intadd(1,1);
收到 2?
总结一下:我需要知道如何从 MASM 创建 .obj 文件,如果它们包含上述宏,以及如果我的代码不起作用,如何从 HLL 调用宏。
我相信Visual C++的标准安装也会安装ml.exe
和ml64.exe
,两者都会产生与该版本的Visual C++link.exe
兼容的.obj
文件。
您可以做的是,将带有ml /c asmfile.asm
的程序集文件组装成.obj
文件后,在.c
文件中添加以下行:
extern int intadd(DWORD int1, DWORD int2);
使用cl /c cfile.c
编译您的.c
代码,然后将两个.obj
文件链接到带有link asmfile.obj cfile.obj /OUT:exefile.exe
的最终可执行文件中。
但是,请注意,您的汇编函数是无效的,因为一旦您缺少ret
语句 - 调用它会使程序崩溃。
如果您正在寻找有关如何在 Visual Studio 中将程序集文件集成到 Visual C++ 项目中的信息,则此问题包含一些信息。