- - PR -
VB.NET2005で作ったdllをVB6.0で使いたい
1
投稿者 | 投稿内容 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 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でも同様なことが出来るでしょうか? ご教授よろしくお願いします。 | ||||||||||||
|
投稿日時: 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 ] | ||||||||||||
|
投稿日時: 2007-10-19 10:14
regasmのオプションでcodebaseを指定してみてはいかがでしょうか。 アセンブリをCOM登録した場合のアセンブリの検索範囲は、 ・GAC ・アプリケーションディレクトリ ・codebase です。エラーの理由は、これらの箇所どこにもClassLibrary1.dllが見つからなかったと思われます。 http://msdn2.microsoft.com/ja-jp/library/h627s4zy(VS.80).aspx セットアッププロジェクトを使ってレジストリ登録ができたりもします。(Register プロパティ)
何をしようとしていますか? 私はCOM+アプリケーションはよく分からないのですが、この作業は必要なのでしょうか。
できますよ。 |
1