谁能告诉我如何将 masm 输出与其他目标文件链接起来。例如 main.obj。
我正在开发一个 Windows 内核模式驱动程序,我想将内联 asm 块移动到单独的 .asm 文件以满足进一步的要求并防止进一步的困难,例如:x64 不支持内联 asm。
因此,我将 vm.asm 源文件添加到项目中,并从构建自定义中选择了 masm。之后,我为项目类型选择了 Microsoft 宏汇编程序。当我构建项目时 vm.obj 文件已成功为 vm.asm 文件创建。但我不能从 C 代码调用 asm 函数(proc)。应该是链接错误,我认为构建过程没有将 obj 文件放在一起。
我也试过 stdcall 和 cdecl 但结果是一样的。
我的 vm.asm:
.386
.model flat, C
option casemap :none
PUBLIC _get_vm
_get_vm PROC
mov eax, 0101h
db 0fh
db 01h
db 0c1h
ret
_get_vm endp
END
这是我的 c 调用:
ULONG vm_id;
extern int _cdecl get_vm();
vm_id = get_vm();
错误:project_ddk\main.obj:错误 LNK2019:函数 _DispatchPnP@8 中引用的未解析的外部符号 _get_vm
我的 ml.exe 命令行:
ml.exe /c /nologo /safeseh /Zi /Fo"%(FileName).obj" /Fl"" /W3 /errorReport:prompt /Ta