1

私は Java プログラマーであり、JNI に取り組んでいます。有効な DLL ファイルを生成するには、Eclipse CDT に -Wl,--kill-at リンカー オプションを追加する必要があります。しかし、なぜ --kill-at が必要なのか、それは何なのかわかりません。

ネットで検索した後、このリンクから詳細を以下に取得しました。

しかし、私はそれを正しく理解していません。これを詳しく説明してくれる人はいますか?

--kill-at
If given, the stdcall suffixes (@nn) will be stripped from symbols before they are    exported.
[This option is specific to the i386 PE targeted port of the linker]
4

2 に答える 2

1

Microsoft システム (PE 実行可能ファイル/DLL 形式) では、呼び出し規約stdcallにより、形式のマングル シンボルが生成されsymbolname@numberます。説明に--kill-atよると、DLL からエクスポートされた名前は、呼び出し規約symbolnameを使用している場合でも同じになります。stdcall

于 2013-07-07T08:45:04.543 に答える
1

デフォルトでは、__stdcall関数には、関数が期待するパラメーターのバイト数が続く接尾辞が付いている@ため、(たとえば) F4 バイトずつの 3 つのパラメーターを受け取る関数は、(オブジェクト ファイルで) の名前を取得します。F@12.

このフラグは、リンカーが DLL を作成するときに、関数名にこれらの接尾辞を含めてはならないFことをリンカに伝えます。関数に name を指定した場合、エクスポートされる名前はF.

于 2013-07-07T08:45:53.297 に答える