他のアプリケーション用のDLLを作成して、アプリケーションの一部の機能をロードして使用します。 DLLは、ロード元の実際のパスに依存します。Windowsプロセス(XP/Windows 7)でロードされたDLLへの実際のパスを見つけるには
<product_home>/bin/<DLL is here>
|
|----/configdir/configfile
|----/lib/<java jarfiles>
それは
私のWindowsアプリケーションproloads特殊なDLLのconfigファイルとロードjarファイルなどを読み取ることproduct_homeの場所を必要とします。私はプロセス内でロードされたDLLへの実際のパスを見つけ、それを使って "HOME"変数を設定する必要があります。これは残りの処理で使用されます。外部的に設定された環境変数を使用すると、マシンに複数のバージョンのdllが存在すると失敗することがあります。私には、実際にロードされた場所を取得できる限り、DLLが独自の "product_home"を把握できるように見えます。
DLLこの記事Get Your DLL's Path/Nameは、このような方法を提供しています(まだ正常に実行されていますが、生成されたexeファイルはクラッシュします)。これは正しいアプローチですか?
はい、私が質問を読む方法は、これは正解です。ハードコードされた名前文字列で 'GetModuleHandle'を呼び出すのはかなり役に立たないようです。 DLLに 'HMODULE'または' HINSTANCE'を既に持っていて、あなたがそのパスを探したいと思っているのははるかに意味があります。 –
質問を改善していただきありがとうございます。 – Jayan
@Codyあなたが知っている名前のDLLへの暗黙的なリンクを使用していた場合、名前部分だけを持つGetModuleHandle(つまりパスがない)を呼び出すことはまさにあなたが行うことです。 –