こんにちは、DLL のエクスポートされた関数を DLL 内の別の関数に転送しています。DLLのエクスポートテーブルの編集にはExpX64を使用しています。(たとえば、?MyFunc@MyClass@@SAJJAEAUMyStruct@@@Z を myDLL.?MyFunc@MyClass@@SAJJAEAUMyStruct@@@Z に転送します)
私の問題は、ターゲット関数がクラスのメンバーであり、実行時に COMException を生成する転送 (「存在しなくなったオブジェクトを使用しようとした」) です。
私が間違っていると思いますか?(呼び出し規則? 通常の関数の転送とクラスメンバーの関数の転送には違いがあるはずです。) MyFunc を次のように実装します。
__declspec(dllexport) LONG MyClass::MyFunc (long a,struct MyStruct& b)
ps: DLL プロキシを使用することもできます (必要なターゲット関数を実装するプロキシ DLL を作成し、他のすべての関数を元の DLL に転送しますが、関数がクラスの一部であるという問題はまだ残っています)。
ありがとう