2010-12-18 6 views
1

こんにちは DLLのエクスポートされた関数をDLLの別の関数に転送します。 ExpX64を使用して、DLLのエクスポートテーブルを編集します。 (例えば私が?MyFuncと@ MyClassの@@ SAJJAEAUMyStruct @@@ Z [email protected]@@[email protected]@@Zへの転送)DLL内にエクスポートされた関数を転送する際の問題

私の問題は私の目標関数がクラスの一員であるということです実行時にCOMExceptionを生成する転送(「存在しなくなったオブジェクトを使用しようとしました」)

私は間違っていると思いますか? (規則を呼び出し、通常の関数とクラスメンバー1を転送違いがあるはず?。) 私はこのようなMyFuncとを実装:

__declspec(dllexport) LONG MyClass::MyFunc (long a,struct MyStruct& b) 

PS:私もプロキシを作成(DLLプロキシを使用することができます私が欲しいのターゲット機能を実装して、元のDLLに他のすべての機能を転送するが、私の関数はクラスの一部である問題が、まだ残っているDLL)

おかげ

+0

クラス(どのモジュール内)にどのようにメモリを割り当てますか?どのようにそれを解放しますか? – wimh

+0

私はそうではありません!私は静的メソッドを使用しています(私は静的メソッドにエクスポートされた関数を転送しています) –

答えて

0

私はあなたが得るエラーがあることを疑いますフォワーディングと何かをする。エラーはSTG_E_REVERTEDであり、これは構造化されたストレージに関連しています(あなたのメソッドは完全に無関係です)。このエラーは、SharePointアプリケーションで特に頻繁に発生します。

を編集します。Structured Storageは、COMの永続化のためのMicrosoft APIです。

+0

ありがとう。あなたは「構造体の保管」についてより具体的に教えてください。 –

+0

@Mehdi:私の編集を参照してください(私は間違っていました;それは "構造* d *"ストレージです) –

+0

ありがとう、私は私の問題を解決しました –

関連する問題