ネイティブC++でWindowsアプリケーションプラグイン(DLLとして)を作成しています。それをmyplugin.dll
としましょう。私のプラグインは、other.dll
という別のDLLを参照しています。暗黙的other.dll
へプラグインDLLによって参照されるDLLの検索パス
application.exe
plugins\
myplugin\
myplugin.dll
myplugin.dll
リンク:
私のプラグインは、アプリケーションのplugins
ディレクトリのmyplugin
サブディレクトリにインストールされています。 other.dll
は仮想メソッドでクラスを公開し、仮想メソッドテーブルはデータと見なされるため遅延ロードできません。遅延読み込みDLLからはインポートできません。
私は自然にmyplugin.dll
の隣に、plugins\myplugin
ディレクトリにother.dll
を配置したいのですが、other.dll
(source)を検索するときに、デフォルトではWindowsがplugins\myplugin
に見えません。
other.dll
をアプリケーションのルートディレクトリに配置する以外に、私の選択肢は何ですか?
(質問はAltering DLL search path for static linked DLLと関連していますが、それは意味をなさないシナリオです:アプリケーションが暗黙的にプラグインDLLとリンクしています。この明確な典型的なシナリオが、その結果が可能であるかどうmyplugin.dll
は、アプリケーションによってロードされるときに明示的other.dll
をロードするなどの一般的な問題、)
編集:別の類似の質問:Plugin DLLs that depend on other DLLs
編集:私は見、問題への解決策を見つけました以下の回答を受け入れました。私が知る限り、これは最もクリーンなソリューションです。私はそれが他の人を助けることを望む。
PATHで見つかったディレクトリはどうですか?あなたが投稿したリンクはちょうどこれを言います。 – PaulMcKenzie
[静的リンクDLLのDLL検索パスを変更する]の可能な複製(http://stackoverflow.com/questions/3832290/altering-dll-search-path-for-static-linked-dll) – gdlmx
@PaulMcKenzie PATHを変更することは非常に煩雑で、副作用があり、基本的にインストーラプログラムが必要です(つまり、純粋な "xcopy-deployment"はもはや不可能です)。 –