使用 MASM 生成目标文件并 link 它们与 MSVC 目标文件

Using MASM to generate Object files and link them with MSVC Object Files

我想要 link 一个仅包含一个函数的程序集文件和一个从中生成的目标文件。我想知道如何在 MASM 中创建 .obj 文件,我还需要知道如何创建这样的函数。这对于将两个整数相加的函数来说足够了吗?

intadd PROC int1:DWORD int2:DWORD
mov eax, int1
mov ebx, int2
add eax, ebx
intadd ENDP

如果我创建并 link obj 文件,我可以做吗

int x = intadd(1,1);

接收 2?

总结一下:如果 .obj 文件包含上述宏,我需要知道如何从 MASM 创建它,如果我的代码不起作用,我需要知道如何从 HLL 调用宏。

我相信 Visual C++ 的标准安装也会安装 ml.exeml64.exe,它们都会生成 .obj 与该版本的 Visual C++ link.exe.

你可以做的是,一旦你用 ml /c asmfile.asm 将你的汇编文件组装成一个 .obj 文件,在你的 .c 文件中,添加行:

extern int intadd(DWORD int1, DWORD int2);

cl /c cfile.c 编译你的 .c 代码,然后 link 两个 .obj 文件用 link asmfile.obj cfile.obj /OUT:exefile.exe.

编译成最终的可执行文件

请注意,您的汇编函数是无效的,因为一旦您缺少 ret 语句 - 调用它会使您的程序崩溃。

如果您正在寻找有关如何将程序集文件集成到 Visual Studio 中的 Visual C++ 项目的信息, 有一些信息。