使用MASM链接外部库

问题描述 投票:0回答:1

我有一个使用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做我不是?

assembly masm masm32 irvine32
1个回答
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

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

© www.soinside.com 2019 - 2024. All rights reserved.