2009-04-24 2 views
0

Мы создали плагин; это DLL (динамическое связывание во время выполнения), которое использует стороннюю библиотеку (wxWidgets), а также динамически связывается с ней. Хост-программное обеспечение, похоже, сканирует наш плагин, но экспортируемые функции не вызываются. Мы проверили все зависимости с DependencyWalker.Проблемы с использованием динамически связанных библиотек (wxWidgets) из DLL

Мы видим в отладчике, что плагин загружен, но DllMain не вызывается, а плагин выгружается.

Мы попытались загрузить наш плагин из простого тестового приложения, используя LoadLibrary и GetProcAddress, которые распознавали и вызывают экспортированные функции.

Имея wxWidgets, связанный статически, работал нормально.

У кого-нибудь есть идея, почему экспортированная функция, соответственно DllMain не вызывается, или может указать инструмент, который способен отслеживать весь процесс загрузки DLL?

ответ

0

Если wxWidgets загружен уже в адресное пространство процесса до того, как ваш плагин будет загружен (это может сделать хост-приложение, или может быть другой плагин, связанный с wxWidgets, который загружен до вашего), тогда может возникнуть вероятность того, что это еще одна версия, в которой отсутствуют некоторые точки входа, необходимые вашему плагину. Запуск хост-приложения под DependencyWalker или WinDbg должно показать вам, какая DLL-версия wxWidgets загружена, и вы можете попробовать загрузить свой плагин из своего тестового приложения, используя точно такую ​​же DLL-версию wxWidgets. Это должно указывать на отсутствие недостающих зависимостей.

0

Возможно, программное обеспечение хоста делает некоторые напуганные вещи при загрузке плагина и не любит wxWindows.

В любом случае попробуйте использовать ProcessExplorer из набора SysInternals, чтобы проверить, что делает этот процесс.

Смежные вопросы