DEF ファイルを使用してラッパー DLL を作成し、EXPORTS
.
元の DLL のエクスポート (dumpbin を使用して生成) から:
EXPORTS
??0FooBar@@QAE@ABV0@@Z @1
私のラッパーDLL用に作成されたDEFファイルから:
EXPORTS
??0FooBar@@QAE@ABV0@@Z=__E__0__ @1
OllyDbg を使用して結果のラッパー DLL を確認すると、エクスポートが実際に次のように変更されていることがわかります。
Names in FooBarDLL, item 0
Address=0F085685
Section=.text
Type=Export
Name=??0FooBar
@@QAE@ABV0@@Z
ご覧のとおり、通常、このタイプのクラス/関数/パラメーターの組み合わせに対して Microsoft Visual C++ によって生成される追加の garbledegock ( ) が欠落しています。
これが OllyDbg の使用に関するユーザー エラーではないことを確認するために、元の DLL のエクスポートもチェックしました。
Names in FooBarDLLOriginal, item 1
Address=1003A800
Section=.text
Type=Export
Name=??0FooBar@@QAE@ABV0@@Z
元の DLL とまったく同じように見えるラッパー DLL が必要なので、この結果は明らかに良くありません。
Visual C++ が DEF エクスポート定義のフラグメントを無視しないようにするにはどうすればよいですか?
多くのコンパイラとリンカのオプションを試してみましたが、目標に近づくことができませんでした。