2009-04-24 9 views
0

プラグインを作成しました。サードパーティ製のライブラリ(wxWidgets)を使用し、動的にリンクするDLL(ランタイムダイナミックリンク)です。ホストソフトウェアはプラグインをスキャンしているようですが、エクスポートされた機能は呼び出されません。 DependencyWalkerとのすべての依存関係を確認しました。DLLからダイナミックリンクライブラリ(wxWidgets)を使用する際の問題

プラグインはロードされていますが、DllMainは呼び出されず、プラグインはアンロードされています。

エクスポートされた関数を認識して呼び出すLoadLibraryとGetProcAddressを使用して、単純なテストアプリケーションからプラグインをロードしようとしました。

静的にリンクされたwxWidgetsをうまく動かしても問題ありません。

エクスポートされた関数、それぞれDllMainが呼び出されない理由、またはDLLロードプロセス全体を監視するツールを指摘できる人はいますか?

答えて

0

あなたのプラグインがロードされる前にwxWidgetsが既にプロセスのアドレス空間にロードされている場合(ホストアプリケーションがそれを実行する可能性があります。またはあなたの前にロードされているwxWidgetsにリンクする別のプラグインがあるかもしれません)別のバージョンで、プラグインに必要なエントリポイントがいくつかありません。 DependencyWalkerまたはWinDbgの下でホストアプリケーションを実行すると、どのwxWidgets DLLがロードされているかがわかるはずです。同じwxWidgets DLLを使用してテストアプリケーションからプラグインをロードしようとする可能性があります。依存関係がないかどうかを明らかにする必要があります。

0

おそらく、ホストソフトウェアは、プラグインを読み込むときにいくつかのファンキーなことを行い、wxWindowsが嫌いです。

とにかく、SysInternalsスイートのProcessExplorerを使用して、プロセスの処理状況を確認してください。

関連する問題