別の (サードパーティ) アプリケーションにプラグインする DLL を作成しています。DLL は別の DLL セットに依存する必要があります (ライセンス上の理由から、静的にリンクすることはできません)。
DLL を任意のディレクトリに「xcopy でデプロイ可能」にしたいと考えています。また、このディレクトリをパスに追加する必要はありません。
通常の方法で DLL をビルドすると、現在のプロセスの隣にある DLL が見つからないため、Windows は DLL のロードを拒否します。
Windows が DLL を見つけやすくするための適切なオプションはありますか?
いくつかの質問に答えるには:
- DLL は C++ で記述されています。
- 追加の DLL は QT-dll です。
- 追加の DLL をプラグイン DLL と同じフォルダに配置したいと考えています。からそのフォルダの名前を取得できます
GetModuleFileName
。 - アプリケーションは Firefox で、DLL は PKCS#11 セキュリティ モジュールです。
- アプリケーションは、DLL へのフル パスを使用して DLL をロードします (プラグインのインストール時にユーザーが指定します)。
- DLL を System32 またはアプリケーションの隣に配置することを要求することは機能しますが、少し面倒であり、アンインストーラーで問題が発生する可能性があります。
LoadLibrary
GetProcAddress
もちろん機能しますが、私の場合は実際には実現可能ではありません。私は、他の DLL で数千とは言わないまでも、数百のメソッドを使用しています。本当に import-libraries を使う必要があります。
SetDllDirectory
DllMainと組み合わせて、遅延ロードされた dll を使用することを考えていました。誰もこのようなことを試しましたか?