【发布时间】:2021-12-07 14:54:23
【问题描述】:
有这么简单的assemblyWin 32程序:
.386
.model flat, stdcall
option casemap :none
EXTERN printf :PROC ; declare printf
.data
HelloWorld db "Hello Wolrd!:-)", 0
.code
start:
sub esp, 4
push offset HelloWorld
call printf
add esp, 4
ret
end start
我可以通过以下方式成功编译它:
ml.exe /c HelloWorld.asm
但是在链接它时遇到问题。当我使用时:
link HelloWorld.obj libcmt.lib
我收到一个错误:
unresolved external symbol _main called in _mainCRTStartup
为了成功链接程序以运行它,我需要更改/更正什么?
附言
请不要告诉我只使用nasm。我想使用我的 MSVC 中的 ml 和 link。
【问题讨论】:
-
不应该是
ml.exe /c /coff HelloWorld.asm,link /SUBSYSTEM:CONSOLE HelloWorld.obj libcmt.lib吗? -
@Michael 我已经尝试过你的建议,但仍然有相同的链接器错误。:-(..
-
没有人会告诉你使用 NASM;它无法汇编这个使用 MASM 语法/指令的文件。而且 NASM 只是一个汇编器,反正不附带链接器。
标签: windows visual-studio assembly masm