我今天开始学习汇编,并在 linux 上运行了许多测试,效果很好!我转移到我的电脑上并开始尝试在这里写一些。我在尝试调用外部函数时遇到了一个问题(这在 linux 上也能正常工作),我会得到 LINK 2001 Unresolved External 错误,告诉我在使用 nasm 编译后未定义 WriteConsoleA:
nasm -f win32 test.asm -o test.obj
Run Code Online (Sandbox Code Playgroud)
并使用 cl.exe:
cl test.obj /link libcmt.lib kernel32.lib
Run Code Online (Sandbox Code Playgroud)
我收到这些错误:
test.obj : error LNK2001: unresolved external symbol ExitProcess
test.obj : error LNK2001: unresolved external symbol GetStdHandle
test.obj : error LNK2001: unresolved external symbol WriteConsoleA
test.exe : fatal error LNK1120: 3 unresolved externals
Run Code Online (Sandbox Code Playgroud)
大会:
extern ExitProcess, GetStdHandle, WriteConsoleA
NULL equ 0
STD_OUTPUT_HANDLE equ -11
section .data
msg db "Hello world!",0xa
msgLen equ $-msg
section …Run Code Online (Sandbox Code Playgroud)