重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

はじめまして、はじめて投稿します。

初心者なので変な質問をしていたらすいません。VB2008を使用しています。

VBで作成したDLLファイルをLabviewで使用したいと思っています。
ただVB6.0でActiveX DLLを作成する方法はわかるのですが、VB2008で作成する方法がわかりません。
クラスライブラリでプログラムを作成し、DLLにすることはできるのです・
しかしレジストリに登録しようと思い「regsvr32 ファイルのパス**.dll」と入力したところ「**.dllは読み込まれましたが、DllRegisterServerエントリポイントが見つかりませんでした」と出ます。

調べてもVB2008でのActiveX DLL作成方法が見つからなくて困っています!!!
わかるかた、よろしくお願いいたします。

A 回答 (4件)

GENGUIDはVB2008のインストールフォルダーにあると思いますので


以下の手順でツールに登録してみましょう

ツール > 外部ツール > 追加(A)をクリック

タイトルに『GENGUID』
コマンドの右端の『...』ボタンをクリック
開いたダイアログのフォルダーを1階層上がってToolsを選択
ここに『GENGUID.EXE』があるのでこれを選択して『開く(またはOK)』
初期ディレクトリに コマンド部分の GENGUID.EXEの手前までをコピーして 貼り付け
OKをクリック

といった手順でいいでしょう
    • good
    • 0
この回答へのお礼

返信ありがとうございます!

とてもわかりやすく、手順通りに行うことができました。
ほんとうにありがとうございます。

ただやっぱりレジストリ登録がうまくいかないようです。

お礼日時:2008/12/10 11:45

#2 です。

ご返信遅くなりましたが、

>もともと自分で保存場所を指定しているのですが大丈夫でしょうか?(D:\kenkyu\***等)
>初歩的なことなのかもしれませんが、もしお時間があればもうすこし詳しい説明をお願いできませんでしょうか?

コマンドプロンプトを起動し、
cd C:\Windows\Microsoft.NET\Framework\xxxxx
と入力します(xxxxx は.NET のバージョン番号)。
次に、
regasm.exe (あなたの作ったdllファイルのフルパス) /codebase
でレジストリ登録できますよ。
regasm.exe /unregister (あなたの作ったdllファイルのフルパス)
で解除です。
    • good
    • 0
この回答へのお礼

ありがとうございます!無事動きました!!!

お礼日時:2009/01/30 20:09

No.1 さんが詳しい回答をしてくださっているので、レジストリ登録について追記します。

regsvr32 の代わりに
regasm.exe を /codebase オプション付きで行ってください。
(C:\Windows\Microsoft.NET\Framework\xxxxx 下 xxxxはバージョン)
厳密な署名をしない場合警告が出ますが、無視しても動作します。
64 bit用ビルド版(x64)を使う場合は、regasm.exe が 32bit 版と同名でも 64bit 専用版で別ファイルになりますので注意が必要です。
    • good
    • 2
この回答へのお礼

お早い回答、ありがとうございます。

えっと、本当に初心者で申し訳ないのですが、
>/codebase オプション付きで
というのがわかりません・・・・
もともと自分で保存場所を指定しているのですが大丈夫でしょうか?(D:\kenkyu\***等)
初歩的なことなのかもしれませんが、もしお時間があればもうすこし詳しい説明をお願いできませんでしょうか?

お礼日時:2008/12/09 16:20

VB2008のエディッションは何でしょう?



完全なCOMオブジェクトの生成はVB2008では無理なのですが COMとして機能を公開することは可能です
.NET アセンブリとしてライブラリ(DLL)を構築して COMとしてのインターフェースやイベントを公開するといったやり方です

詳細は VB2008付属のMSDNで
『チュートリアル : Visual Basic 2005 での COM オブジェクトの作成 』
などを検索してみてください

1) Windows用のクラスライブラリプロジェクトを新規に作成
2) メニューから プロジェクト > 新しい項目の追加 > テンプレートで『COMクラス』
3) 必要なプロパティやメソッドを追加
4) コンパイル
5) ライブラリをテストするWinEXEプロジェクトを実行
といった形でライブラリが登録されると思います

テンプレートの『COMクラス』がない場合は
1) クラスライブラリとしてプロジェクトを作成
2) メニューから プロジェクト > (クラスライブラリの)プロパティ > アプリケーションタブの『アセンブリ情報(Y)』をクリック > 『アセンブリをCOM参照可能にする』にチェック
3) コードウィンドウで
Public Const ClassId As String = ""
Public Const InterfaceId As String = ""
Public Const EventsId As String = ""
を記述しておき

ツール > GUIDGEN を実行 4の『Register Format』を選択して COPY
VBに戻って
Public Const ClassId As String = "" の ""の中にキャレット(カーソル)をおいて Shift+Insertで貼り付け { }を削除
同様の手順で InterfaaceIdやEventsIdを設定
4) 必要なプロパティやメソッドを構築

といった手順で行ってみてください

regsvr32による登録/解除葉出来ないようですが ・・・
    • good
    • 0
この回答へのお礼

お返事、ありがとうございます!早くてびっくりしました!!

>VB2008のエディッションは何でしょう?
VB2008 Express Editionというものを使用しています。

テンプレートの「COMクラス」が見つからなかったので2つ目の方法を行おうと思ったのですが、「アセンブリをCOM参照可能にする」をチェックするところまではできました。
でも3)からがよくわからなくて、

>コードウィンドウで
のコードウィンドウとはプログラムを書く箇所でいいんですか?

>ツール > GUIDGEN を実行 4の『Register Format』を選択して COPY
とありますが、メニューのツールに上記のようなものがありません。
わたしの設定方法がおかしいのでしょうか?

お礼日時:2008/12/09 16:14

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!