- ベストアンサー
VC++で作成したDLLについて
すみません、 VC++6.0で作成したDLLについて教えていただきたいのですが。 TEST_A.DLLというDLLと、TEST_B.DLLというDLLファイルを作成したとして これをC:\TEST\DLL\に格納してるとします。 このとき、TEST_B.DLLからはTEST_A.DLLの関数を呼び出しています。 次に、TEST_B.DLLの関数を使用しているTEST.EXEという実行ファイルを VB6.0で作成します。 このファイルをC:\TEST\EXE\に格納します。 そして、TEST.EXEを実行すると、 「TEST_B.EDLLが見付かりません」と言って怒られてしまいます。 VBでは、TEST_B.DLLをフルパスで指定しております。 しかし、TEST_A.DLLをEXEと同じ場所に置いてあげると 正常に動きます。 これは、TEST_B.DLLからTEST_A.DLLが見えていないということなのでしょうか? TEST_B.DLLの設定がおかしいのでしょうか? それとも、TEST.EXEでもTEST_A.DLLをフルパス指定してあげないといけないのでしょうか? ちなみに今回、プロジェクトマネージャーから「環境変数(PATH)の設定はしたくない」と言われていますので、PATHの指定はしてません。 すみませんが、どなたか教えていただけますでしょうか?
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
DLLも実行ファイルの一つですから、環境変数'PATH'で指定されているディレクトリにコピーされていることが前提です。 環境変数を設定したくないということであれば、実行環境ではEXEとDLLを同じフォルダに格納するしかありません。 カレントフォルダにEXE、DLLが同居していればPATHの通っていないフォルダでも問題ありません。 私なら、C:\TEST\BIN にEXE、DLL及びBATを格納します。
その他の回答 (1)
- MrBan
- ベストアンサー率53% (331/615)
> これは、TEST_B.DLLからTEST_A.DLLが見えていないということなのでしょうか? その通りです。 参照先のルールは、MSDNでLoadLibraryを探して参考にしてください。 基本的には、PATHが通っていないと、探せません。 あらかじめ、明示的にLoadLibraryを行っておくことで 回避できませんか。(管理は面倒になるかもしれませんが…
お礼
なるほどですね。 どうもありがとうございます!
お礼
やはりEXE,DLLの同居するしかないですね。 ありがとうございます!!