我有一个使用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做什么我不是?
答案 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
检查路径!您正在使用相对路径。