(TEST.ASM):私はNASMでそれを組み立てたよりMinGWの32 "`への未定義参照のExitProcess 4' @" 私は小さなアセンブラプログラムを書いた学習の目的のために
global _main
extern [email protected]
section .text
_main:
mov ebx,0
push ebx
call [email protected]
(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
を私はので、多分誰かが間違っているものを私に伝えることができダム間違いをしたと確信しています。
EDIT:だから今、私はなぜ "gccの" "-lkernel32" 知っているが疑問に思って
gcc main.obj -nostdlib -lkernel32
:
私は "gccの" の代わりに、それはの仕事を使用していた場合「ld」は含まれていません。
'-v'オプションを' gcc'コマンドラインに追加すると、 'ld'をどのように呼び出すのかがわかります。 – Jester
ありがとうございます。それは私の大きなヒントです。 – Michael
kernel32.libはどこですか? '-L'オペランドを追加しようとしましたか? –
fuz