- PR -

別フォルダからのDLL読み込み

1
投稿者投稿内容
なゆき
会議室デビュー日: 2004/02/04
投稿数: 17
投稿日時: 2004-02-07 22:24
まだ勉強中の身です。宜しくお願いします。

VB.NETでプログラムを勉強しているのですが、DLLがクラスライブラリでDLLを
作成できることは分かったのですが、そのDLLを別の(詳しくは1つ下のディレクトリ)
フォルダに入れて、EXEファイルから読み込みたいのです。
しかし、設定があるのかと思い、いろいろ見てみたのですが、設定するべき
ところはなかったので、どうすれば読み込めるようになるのか分からない次第です。
レジストリをいじらないといけないのか?はたまた環境変数をいじるのか?
いろいろ考えてみたのですが、答えがでなかったのです。
何か方法はあるのでしょうか?(ありますよね?当然)
宜しくお願いします。
ハネ
常連さん
会議室デビュー日: 2002/01/09
投稿数: 32
お住まい・勤務地: 東京
投稿日時: 2004-02-07 22:39
DLLは起動するEXEから見て以下の場所に配置する必要があります。
1.アプリケーションがロードされたディレクトリ
2.カレントディレクトリ
3.Windowsシステムディレクトリ(system32)
4.Windowsディレクトリ
5.Path環境変数に設定されたディレクトリ
であるため、方法としては、
1.EXEとDLLを同じディレクトリに配置する。
2.EXEを起動する際にDLLのディレクトリをカレントディレクトリ
 として起動する。
3.DLLをsystem32ディレクトリに配置する。
4.DLLをWindowsディレクトリに配置する。
5.Path環境変数にDLLの配置しているディレクトリを設定する。
などが考えられます。
後は、EXEのプログラムの中でカレントディレクトリを
DLLの配置したディレクトリに設定(SetCurrentDirectory()?)
しても良いです。
karajan
ベテラン
会議室デビュー日: 2002/07/05
投稿数: 89
投稿日時: 2004-02-07 22:57
お世話になります。

Karajanです。

下記のように設定ファイルに検索する場所を指定することもできます。
ディレクトリを複数指定する場合は、セミコロンで区切ればOKです。

検索パスに bin/DLLs を指定する場合。

<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<probing privatePath="bin\DLLs"/>
</assemblyBinding>
</runtime>
</configuration>

詳細はMSDNをご覧ください。
なちゃ
ぬし
会議室デビュー日: 2003/06/11
投稿数: 872
投稿日時: 2004-02-07 22:59
引用:

ハネさんの書き込み (2004-02-07 22:39) より:
DLLは起動するEXEから見て以下の場所に配置する必要があります。



.NET では違います…

最も簡単には、EXEと同じフォルダもしくは、EXEのあるフォルダ直下の、アセンブリ名(DLL名と思ってよいです)と同じ名前のフォルダに配置します。
もっと細かい話は、うーん、記事にもあったと思います、どっかに…
ya
大ベテラン
会議室デビュー日: 2002/05/03
投稿数: 212
投稿日時: 2004-02-07 23:27
http://www.atmarkit.co.jp/fdotnet/technology/idnfw11_03/idnfw11_03_01.html

この辺ですかね。ほかの回も重要ですけど。

基本的には
1.厳密名をつける
2.構成ファイルでdependentAssemblyで指定する。
という手順になります。

同じディレクトリに入れる等(ぞくにいうプローブ)はあくまで簡略化のためのもの、と認識したほうがいいと思います。
ディレクトリを分けなければならないようなレベルなら余計にきちんとすることをすすめます。
なゆき
会議室デビュー日: 2004/02/04
投稿数: 17
投稿日時: 2004-02-08 19:28
アドバイスありがとうございます。
参考に挙げていただいた、サイトと助言を元に勉強してみます。
1

スキルアップ/キャリアアップ(JOB@IT)