- PR -

VB.NET2005で作ったdllをVB6.0で使いたい

1
投稿者投稿内容
未記入
常連さん
会議室デビュー日: 2004/08/26
投稿数: 34
投稿日時: 2007-10-18 23:58
[OSのVER]: XP
[VBのVER]: .NET2005、VB6.0

VB.NET2005で作ったdllをVB6.0で使いたいのですが、上手くいきません。

1.VB.NETでクラスライブラリのプロジェクト「ClassLibrary1」を新規作成
2. Comクラス「ComClass1」を追加、
3. ComClass1にパブリックファンクション「aaa」を追加(戻り値=100)
4. プロジェクトのプロパティより「COM の相互運用機能に登録」にチェックを入れる
5. ビルド実行

6. VB6.0より、以下のコードを実行
dim a as Object
Set a = CreateObject("ClassLibrary1.ComClass")
MsgBox a.aaa

7. 6の結果、メッセージボックスに「100」と表示される。

上記の処理はローカルPCで実行できたのですが、
他のコンピュータではできませんでした。
他のコンピュータで行った作業
1. ClassLibrary1.dll、ClassLibrary1.tlbをF:\\\\にコピー
2. コマンド Regasm F:\\\\ClassLibrary1.dll /tlb:ClassLibrary1.tlb を実行
3. ClassLibrary1.tlbをコンポーネントに登録
(コンポーネントサービスのCOM+アプリケーションに空のアプリケーション「ClassLibrary1」を作成し、
 ClassLibrary1.tlbをドラッグ&ドロップ)
4. 上記6の処理を実行
5. 「オートメーションエラー 指定したファイルが見つかりません」が発生


他のコンピュータ上で実行するためには
どうすればよいのでしょうか?
また、開発環境.NET2003、実行環境FrameWork1.1でも同様なことが出来るでしょうか?
ご教授よろしくお願いします。

k_kazu
常連さん
会議室デビュー日: 2006/02/11
投稿数: 25
投稿日時: 2007-10-19 08:41
以前 Access から利用できる COM コンポーネントを利用したときには Access.exe のあるディレクトリか、Windowsディレクトリにコピーしたら動作するようになりました。


regasm でMSDNを調べると
http://msdn2.microsoft.com/ja-jp/library/tzat5yw6(VS.80).aspx

の後ろの方で
『Regasm.exe を使用してアセンブリを登録した後で、そのアセンブリをグローバル アセンブリ キャッシュ内に登録すると、どの COM クライアントからもアクティブにできます。アセンブリをアクティブにするアプリケーションが 1 つだけの場合は、そのアプリケーションのディレクトリ内にアセンブリを格納できます。』

と書いています。

つまり1つのEXEからしか使わないならEXEをインストールしたフォルダで、
複数のEXEから使うならグローバルアセンブリキャッシュにインストール。

という事でしょう。


[ メッセージ編集済み 編集者: k_kazu 編集日時 2007-10-19 08:46 ]
かめたろ
ぬし
会議室デビュー日: 2003/03/20
投稿数: 255
投稿日時: 2007-10-19 10:14
引用:

2. コマンド Regasm F:\\\\\\\\ClassLibrary1.dll /tlb:ClassLibrary1.tlb を実行


regasmのオプションでcodebaseを指定してみてはいかがでしょうか。
アセンブリをCOM登録した場合のアセンブリの検索範囲は、
・GAC
・アプリケーションディレクトリ
・codebase
です。エラーの理由は、これらの箇所どこにもClassLibrary1.dllが見つからなかったと思われます。
http://msdn2.microsoft.com/ja-jp/library/h627s4zy(VS.80).aspx

セットアッププロジェクトを使ってレジストリ登録ができたりもします。(Register プロパティ)

引用:

3. ClassLibrary1.tlbをコンポーネントに登録
(コンポーネントサービスのCOM+アプリケーションに空のアプリケーション「ClassLibrary1」を作成し、
 ClassLibrary1.tlbをドラッグ&ドロップ)


何をしようとしていますか?
私はCOM+アプリケーションはよく分からないのですが、この作業は必要なのでしょうか。

引用:

また、開発環境.NET2003、実行環境FrameWork1.1でも同様なことが出来るでしょうか?


できますよ。
1

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