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