1

您好我正在将 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,但是我的函数是类的一部分的问题,仍然存在)

谢谢

4

1 回答 1

0

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

编辑结构化存储是用于在 COM 中持久化的 Microsoft API。

于 2010-12-18T12:42:20.887 回答