@IT会議室は、ITエンジニアに特化した質問・回答コミュニティ「QA@IT」に生まれ変わりました。ぜひご利用ください。
- PR -

【VB2005】自作dllの置き場所について

1
投稿者投稿内容
gt-f
会議室デビュー日: 2006/10/05
投稿数: 18
投稿日時: 2007-12-13 19:54
こんちには。gt-fと申します。
別の質問も進行中ですが、両方ともCloseさせます。
同時進行でごめんなさい。

【環境】
OS:WinXP(sp2), VB2005, SQLServer2005

以下の3つのファイルから構成されたVB2005の
プロジェクトを担当しています。

VB.exe(vb2005)
 vb.dll(vb2005で自作したdll)
 vc.dll(vc++2005で自作したdll)

【やりたいこと】
vb.dll, vc.dllをsystem32直下に配置し、
VB.exe 単体で起動させたい。

【現状】
vc.dllをsystem32直下に置き、
vb.dllを、vb.exeと同じフォルダに配置すれば、vb.exeは起動する。

簡単なことなのかもしれませんが、ずっとはまっています。
どうかご教示ください。

よろしくお願いいたします。
gt-f
会議室デビュー日: 2006/10/05
投稿数: 18
投稿日時: 2007-12-13 20:09
すみません。補足です。

開発時は、

 ・vb.dllは自作のコンポーネントで、vb.exeのフォーム上に
  貼り付けて使っていた(コンポーネント名.メソッド名)

 ・vb.exe から、vb.dll を参照設定していた。

 ・vb.dllは、常にvb.exeと同じフォルダに配置していた。


これからvb.exeを配布するにあたり、vb.dllをvb.exeと同じフォルダに
置かせるのもおかしい、と思った次第です。
甕星
ぬし
会議室デビュー日: 2003/03/07
投稿数: 1185
お住まい・勤務地: 湖の見える丘の上
投稿日時: 2007-12-13 20:10
VC2005で作成したDLLはCLRですかネィティブですか?

CLRなら、その動作は仕様どおりです。.NETでDLLを検索するときにはパスの通っているディレクトリではなく、GACを検索します。したがって実行ファイルと同じディレクトリにDLLを置くか、GACにDLLを登録するしかありません。
gt-f
会議室デビュー日: 2006/10/05
投稿数: 18
投稿日時: 2007-12-13 20:18
CLRかネイティブかは分からないのですが、
「Win32プロジェクト」として作成したものです。

VCで作成したDLLは、system32直下に配置すれば、
VB.exeからは認識されています。

VB.dllをsystem32直下に配置したいのですが、
VC.dllの(CLR/ネイティブ)が関係してくるのでしょうか。
甕星
ぬし
会議室デビュー日: 2003/03/07
投稿数: 1185
お住まい・勤務地: 湖の見える丘の上
投稿日時: 2007-12-13 20:43
VB2005ではネィティブなDLLは作れないので、GACに登録するか、アプリケーションと同じディレクトリに置くしかないですね。
gt-f
会議室デビュー日: 2006/10/05
投稿数: 18
投稿日時: 2007-12-13 21:12
甕星様

ありがとうございます。大変助かりました。

ちょうど今、参考になりそうなサイトを見つけました(2003年の記事)

http://www.atmarkit.co.jp/fdotnet/technology/idnfw11_03/idnfw11_03_03.html

アセンブリがGACで見つからない場合、アセンブリのコードベースを参照する
とのことです。
コードベースは「アプリケーションのファイル名.config」ファイルで指定できる
らしいです。

しかし、VB2005では、そのようなファイルが見つからなかったので、
アプリケーションと同じディレクトリに置こうと思います。

とても勉強になりました。どうもありがとうござました。
一郎
ぬし
会議室デビュー日: 2002/10/11
投稿数: 1081
投稿日時: 2007-12-14 09:17
引用:

gt-fさんの書き込み (2007-12-13 21:12) より:
しかし、VB2005では、そのようなファイルが見つからなかったので、


gt-fさんが作らなければ当然見つかりません。
テキストエディタで作ってもいいですし、VisualStudioであればプロジェクトへの新しい項目の追加で"アプリケーション構成ファイル"というものを追加してもいいです。
1

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