在DLL中转发导出函数的问题

时间:2010-12-18 10:28:01

标签: c++ dll proxy export forwarding

您好 我正在将DLL的导出函数转发到我的DLL中的另一个函数。我使用ExpX64编辑DLL的导出表。 (例如,我将?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,但是我的函数是类的一部分的问题仍然存在)< / p>

谢谢

1 个答案:

答案 0 :(得分:0)

我怀疑你得到的错误必须对转发做任何事情。错误是STG_E_REVERTED,这与结构化存储(您的方法似乎与之完全无关)有关。在SharePoint应用程序中,该错误显然特别频繁。

修改Structured Storage是用于COM中持久性的Microsoft API。