使用MASM链接外部库

时间:2017-12-31 05:03:10

标签: assembly masm masm32 irvine32

我有一个使用Visual Studio 2015编写的汇编项目。

该项目依赖于2个外部库。我已将它们都包含在.asm文件的顶部,如下所示:

include lib\Irvine\Irvine32.inc
includelib lib\Irvine\Irvine32.lib

include lib\masm32\include\winmm.inc
includelib lib\masm32\lib\winmm.lib

当我在Visual Studio中编译并运行项目时,没有错误,程序按照它应该的方式运行。

但是当我尝试从命令行编译时:

ml /c /coff /Cp pacman.asm /I lib/Irvine /I lib\masm32\lib
link pacman.obj \lib\Irvine\Irvine32.lib lib\masm32\lib\winnm.lib /subsystem:console

我得到了一堆看起来像这样的错误:

pacman.obj:pacman.asm:(.text+0x51): undefined reference to `_ExitProcess@4'

其中ExitProcess是masm32内部某个程序的名称。

我试着查看项目和解决方案文件,看看我是否遗漏了任何东西,但我无法弄清楚。

VS做什么我不是?

1 个答案:

答案 0 :(得分:2)

显式添加定义函数的libs(kernel32和user32):

...
includelib lib\Irvine\Irvine32.lib
includelib lib\Irvine\Kernel32.lib
includelib lib\Irvine\User32.lib
...

您可以使用MASM32库:

includelib lib\masm32\lib\winmm.lib
includelib lib\masm32\lib\kernel32.lib
includelib lib\masm32\lib\user32.lib

检查路径!您正在使用相对路径。