Проблема с пересылкой экспортированной функции в DLL - PullRequest
1 голос
/ 18 декабря 2010

Привет! Я пересылаю экспортированную функцию 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, но проблема в том, что моя функция является частью класса, все еще остается)

Спасибо

1 Ответ

0 голосов
/ 18 декабря 2010

Я сомневаюсь, что полученная вами ошибка связана с пересылкой. Ошибка STG_E_REVERTED, и это связано со структурированным хранилищем (с которым ваш метод, похоже, совершенно не связан). Ошибка, по-видимому, особенно часто встречается в приложениях SharePoint.

Редактировать : Структурированное хранилище - это API-интерфейс Microsoft для сохранения в COM.

...