• ベストアンサー

VB2008でのDLL作成方法について

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

質問者が選んだベストアンサー

  • ベストアンサー
  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.3

GENGUIDはVB2008のインストールフォルダーにあると思いますので 以下の手順でツールに登録してみましょう ツール > 外部ツール > 追加(A)をクリック タイトルに『GENGUID』 コマンドの右端の『...』ボタンをクリック 開いたダイアログのフォルダーを1階層上がってToolsを選択 ここに『GENGUID.EXE』があるのでこれを選択して『開く(またはOK)』 初期ディレクトリに コマンド部分の GENGUID.EXEの手前までをコピーして 貼り付け OKをクリック といった手順でいいでしょう

hashiken12
質問者

お礼

返信ありがとうございます! とてもわかりやすく、手順通りに行うことができました。 ほんとうにありがとうございます。 ただやっぱりレジストリ登録がうまくいかないようです。

その他の回答 (3)

noname#259269
noname#259269
回答No.4

#2 です。ご返信遅くなりましたが、 >もともと自分で保存場所を指定しているのですが大丈夫でしょうか?(D:\kenkyu\***等) >初歩的なことなのかもしれませんが、もしお時間があればもうすこし詳しい説明をお願いできませんでしょうか? コマンドプロンプトを起動し、 cd C:\Windows\Microsoft.NET\Framework\xxxxx と入力します(xxxxx は.NET のバージョン番号)。 次に、 regasm.exe (あなたの作ったdllファイルのフルパス) /codebase でレジストリ登録できますよ。 regasm.exe /unregister (あなたの作ったdllファイルのフルパス) で解除です。

hashiken12
質問者

お礼

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

noname#259269
noname#259269
回答No.2

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

hashiken12
質問者

お礼

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

  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.1

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による登録/解除葉出来ないようですが ・・・

hashiken12
質問者

お礼

お返事、ありがとうございます!早くてびっくりしました!! >VB2008のエディッションは何でしょう? VB2008 Express Editionというものを使用しています。 テンプレートの「COMクラス」が見つからなかったので2つ目の方法を行おうと思ったのですが、「アセンブリをCOM参照可能にする」をチェックするところまではできました。 でも3)からがよくわからなくて、 >コードウィンドウで のコードウィンドウとはプログラムを書く箇所でいいんですか? >ツール > GUIDGEN を実行 4の『Register Format』を選択して COPY とありますが、メニューのツールに上記のようなものがありません。 わたしの設定方法がおかしいのでしょうか?

関連するQ&A

専門家に質問してみよう