投稿日 | : 2007/05/24(Thu) 14:53 |
投稿者 | : 魔界の仮面弁士 |
Eメール | : |
URL | : |
タイトル | : Re: API関数のDLLファイル名の定数化について |
> このDLLファイル名をIniファイル等から読み込んで設定することは可能でしょうか?
できません。
ゆえに一般的には、絶対パスを指定するのではなくファイル名のみを記載するようにします。
Lib 節にパスが含まれていない場合には、
(1) App.Path
(2) CurDir()
(3) Windows のシステム ディレクトリ
(4) Windows のディレクトリ
(5) Environ("PATH") のディレクトリ
の順で DLL が検索されますので、これで対応することになるというわけです。
そういう意味では、(2)のカレント ディレクトリの切替によって対応できなくもないのですが、
DLL がロード/アンロードされるタイミングを制御しにくいため、実践的ではありません。
もし、無理矢理な方法を取るなら、LoadLibrary API を併用することになるでしょう。
> DLLの置き場所を変更することがあり、また、多くのExeで使用しているので、
> 変更のたびにExeを作り直したくないのです。
DLL の置き場を変更しないようにするのが、安全かつ楽な解決策かと思いますよ。
サイド バイ サイド実行だと割り切ってしまえば、DLL をアプリケーション間で共有せずに、
exe と同じディレクトリに固定配置することで、問題なく動くわけですし。