1
用于学习目的,我写了一个小汇编程序(TEST.ASM):MinGW的32 “未定义参考`了ExitProcess @ 4' ”
global _main
extern [email protected]
section .text
_main:
mov ebx,0
push ebx
call [email protected]
比我与NASM组装它(test.obj):
nasm -f win32 test.asm
现在我想将它链接到 “移植可执行”(的Windows 10 32位的):
ld test.obj
但我总是收到此错误信息:
undefined reference to `[email protected]'
据我理解这条消息意味着,我的程序不挂“的Kernel32.dll”。 但我认为“ld”自动链接“Kernel32.dll”,所以我不必为此添加一些标志。 而且如果我添加此标志:
ld test.obj -lkernel32
我收到以下错误消息:
cannot find -lkernel32
我相信我做了一个愚蠢的错误,所以也许有人能告诉我什么是错的。
编辑:
如果我使用 “GCC”,而不是它的工作的:
gcc main.obj -nostdlib -lkernel32
所以现在我想知道为什么 “GCC” 知道 “-lkernel32”和“ld”。
将'-v'选项添加到'gcc'命令行,您将看到它是如何为您调用'ld'的。 – Jester
谢谢。这是我很好的暗示。 – Michael
kernel32.lib在哪里?您是否尝试添加'-L'操作数? –
fuz