3

オフライン テスト用のダミー DLL を生成するプロジェクトに取り組んでいます。互換性がないように見えますが、実際の DLL とそのヘッダー ファイルがあります。DLL 内の名前はマングルされていませんが、関数の前方宣言宣言は次のように呼び出されます__stdcall

たとえば .h

DWORD __stdcall DoSomething(byte aByte);

Dependency Walker の example.dll:

2 (0x0002)   2 (0x0002)   DoSomething   0x000831C0

私が読んだ限りでは、__stdcall規約で関数をエクスポートできる場合、その名前は依存関係ウォーカーで次のように読み取られる必要があります。

2 (0x0002)   2 (0x0002)   _DoSomething@1   0x000831C0

これは、ヘッダー ファイルがコンパイルされた DLL に対応していないことを意味しますか、それとも何か不足していますか?

最終的に、ダミー関数のエクスポートを作成して、エミュレートしている実際の DLL と同じように動作させるにはどうすればよいでしょうか?

4

2 に答える 2

0

前に __stdcall を使用するプロシージャ名の変更を停止するには: gnu c++ コンパイラを使用する場合は-Wl,--kill-at、リンカーに " " パラメータを追加します。

コードブロックを使用する場合:

"Settings" -> "Compiler..."
"Global compiler settings"
"Linker settings"
"Other linker options":
add: "-Wl,--kill-at"

devc++ を使用する場合

project->project options
Parameters
add "-Wl,--kill-at" to linker
于 2016-01-20T02:58:00.887 に答える