1

コマンドライン引数を取得する単純なアプリケーションを(NASMを使用して)アセンブリで作成したいと思います。今のところ、とを使用extern _GetCommandLineAcall _GetCommandLineAて関数を呼び出します。コードをコンパイルして、NASMからオブジェクトファイルを取得します。次に、GCCを使用してEXEをリンクおよび作成します。標準ライブラリを使用したくないので、次のコマンドを使用して実行可能ファイルをビルドします。

gcc test.obj -s -nostartfiles -nostdlib -nodefaultlibs -o test.exe

エラーがUndefined reference to GetCommandLineA発生し、ASMの初心者として、理由がわかりません。いくつかの助けを本当にいただければ幸いです。前もって感謝します!

4

1 に答える 1

1

GetCommandLineAおよびは、ほとんどのWindows APIと同様に、WINAPI(stdcall)呼び出し規約GetCommandLineWを使用するように定義されています。kernel32.dll

アセンブリからこの関数を呼び出すには、完全に「装飾された」シンボル名を指定する必要があります。この場合は_GetCommandLineA@0

_GetCommandLineAアセンブリファイルを次のように置き換えます_GetCommandLineA@0

于 2012-06-05T19:36:59.527 に答える