2010-12-18 31 views
1

嗨 我正在將DLL的導出函數轉發給我的DLL中的另一個函數。我使用ExpX64來編輯DLL的導出表。 (例如我轉發?MYFUNC @ MyClass的@@ SAJJAEAUMyStruct @@@ Z到[email protected]@@[email protected]@@Z)在DLL中轉發導出函數的問題

我的問題是,我的目標函數是一個類的成員並在運行時,生成COMException的轉發(「試圖使用已停止存在的對象」)

您認爲我做錯了什麼? (調用約定和應該轉發普通函數和類成員之一之間的區別嗎?)。 我實現MYFUNC這樣的:

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

PS:我還可以使用一個DLL代理(創建一個代理DLL實現目標功能我想和所有其他功能轉發到原來的DLL,但我的函數是一個類的一部分的問題,仍然存在)

感謝

+0

如何爲類(在哪個模塊中)分配內存,以及如何釋放內存? – wimh 2010-12-18 10:40:25

+0

我不是!我使用靜態方法(我正在將導出的函數轉發到我的靜態方法) – 2010-12-18 12:22:09

回答

0

我懷疑你的錯誤有對轉發做任何事情。錯誤是STG_E_REVERTED,這與結構化存儲(您的方法似乎完全無關)有關。該錯誤在SharePoint應用程序中顯然特別頻繁。

編輯Structured Storage是用於COM中持久性的Microsoft API。

+0

謝謝。您能否更具體地瞭解「結構存儲」? – 2010-12-18 13:00:37

+0

@Mehdi:看到我的編輯(我打錯了;它是「結構* d *」存儲) – 2010-12-18 13:11:33

+0

謝謝,我解決了我的問題 – 2010-12-19 08:03:27