• ベストアンサー

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の指定はしてません。 すみませんが、どなたか教えていただけますでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • PrintScree
  • ベストアンサー率25% (538/2091)
回答No.1

DLLも実行ファイルの一つですから、環境変数'PATH'で指定されているディレクトリにコピーされていることが前提です。 環境変数を設定したくないということであれば、実行環境ではEXEとDLLを同じフォルダに格納するしかありません。 カレントフォルダにEXE、DLLが同居していればPATHの通っていないフォルダでも問題ありません。 私なら、C:\TEST\BIN にEXE、DLL及びBATを格納します。

noname#23059
質問者

お礼

やはりEXE,DLLの同居するしかないですね。 ありがとうございます!!

その他の回答 (1)

  • MrBan
  • ベストアンサー率53% (331/615)
回答No.2

> これは、TEST_B.DLLからTEST_A.DLLが見えていないということなのでしょうか? その通りです。 参照先のルールは、MSDNでLoadLibraryを探して参考にしてください。 基本的には、PATHが通っていないと、探せません。 あらかじめ、明示的にLoadLibraryを行っておくことで 回避できませんか。(管理は面倒になるかもしれませんが…

noname#23059
質問者

お礼

なるほどですね。 どうもありがとうございます!

関連するQ&A

専門家に質問してみよう