質問
VB2008でのDLL作成方法について
- 投稿日時:2008/12/08 18:26
はじめまして、はじめて投稿します。
初心者なので変な質問をしていたらすいません。VB2008を使用しています。
VBで作成したDLLファイルをLabviewで使用したいと思っています。
ただVB6.0でActiveX DLLを作成する方法はわかるのですが、VB2008で作成する方法がわかりません。
クラスライブラリでプログラムを作成し、DLLにすることはできるのです・
しかしレジストリに登録しようと思い「regsvr32 ファイルのパス**.dll」と入力したところ「**.dllは読み込まれましたが、DllRegisterServerエントリポイントが見つかりませんでした」と出ます。
調べてもVB2008でのActiveX DLL作成方法が見つからなくて困っています!!!
わかるかた、よろしくお願いいたします。
回答 (4件)
- 最新から表示
- 回答順に表示
- ベストアンサーのみ表示
No.4ベストアンサー10pt
- 回答日時:2008/12/18 10:29
#2 です。ご返信遅くなりましたが、
>もともと自分で保存場所を指定しているのですが大丈夫でしょうか?(D:\kenkyu\***等)
>初歩的なことなのかもしれませんが、もしお時間があればもうすこし詳しい説明をお願いできませんでしょうか?
コマンドプロンプトを起動し、
cd C:\Windows\Microsoft.NET\Framework\xxxxx
と入力します(xxxxx は.NET のバージョン番号)。
次に、
regasm.exe (あなたの作ったdllファイルのフルパス) /codebase
でレジストリ登録できますよ。
regasm.exe /unregister (あなたの作ったdllファイルのフルパス)
で解除です。
この回答へのお礼
ありがとうございます!無事動きました!!!
No.3ベストアンサー20pt
- 回答日時:2008/12/09 17:14
GENGUIDはVB2008のインストールフォルダーにあると思いますので
以下の手順でツールに登録してみましょう
ツール > 外部ツール > 追加(A)をクリック
タイトルに『GENGUID』
コマンドの右端の『...』ボタンをクリック
開いたダイアログのフォルダーを1階層上がってToolsを選択
ここに『GENGUID.EXE』があるのでこれを選択して『開く(またはOK)』
初期ディレクトリに コマンド部分の GENGUID.EXEの手前までをコピーして 貼り付け
OKをクリック
といった手順でいいでしょう
この回答へのお礼
返信ありがとうございます!
とてもわかりやすく、手順通りに行うことができました。
ほんとうにありがとうございます。
ただやっぱりレジストリ登録がうまくいかないようです。
No.2
- 回答日時:2008/12/08 20:19
No.1 さんが詳しい回答をしてくださっているので、レジストリ登録について追記します。regsvr32 の代わりに
regasm.exe を /codebase オプション付きで行ってください。
(C:\Windows\Microsoft.NET\Framework\xxxxx 下 xxxxはバージョン)
厳密な署名をしない場合警告が出ますが、無視しても動作します。
64 bit用ビルド版(x64)を使う場合は、regasm.exe が 32bit 版と同名でも 64bit 専用版で別ファイルになりますので注意が必要です。
この回答へのお礼
お早い回答、ありがとうございます。
えっと、本当に初心者で申し訳ないのですが、
>/codebase オプション付きで
というのがわかりません・・・・
もともと自分で保存場所を指定しているのですが大丈夫でしょうか?(D:\kenkyu\***等)
初歩的なことなのかもしれませんが、もしお時間があればもうすこし詳しい説明をお願いできませんでしょうか?
No.1
- 回答日時:2008/12/08 19:13
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による登録/解除葉出来ないようですが ・・・
この回答へのお礼
お返事、ありがとうございます!早くてびっくりしました!!
>VB2008のエディッションは何でしょう?
VB2008 Express Editionというものを使用しています。
テンプレートの「COMクラス」が見つからなかったので2つ目の方法を行おうと思ったのですが、「アセンブリをCOM参照可能にする」をチェックするところまではできました。
でも3)からがよくわからなくて、
>コードウィンドウで
のコードウィンドウとはプログラムを書く箇所でいいんですか?
>ツール > GUIDGEN を実行 4の『Register Format』を選択して COPY
とありますが、メニューのツールに上記のようなものがありません。
わたしの設定方法がおかしいのでしょうか?
このQ&Aを見た人はこんなQ&Aも見ています
- C#で作成したDLLをExcelVBAで利用する
- VB.NETのコンボボックスについて
- VB2008からDLLを呼出し使いたい。
- オブジェクト(dll)のレジストリ登録について
- Visual Studio .NET C# でDLLを作成し、VB.N
- COMコンポーネントって何?
- DLLを作成してVBAから使用する方法は?
- VB2008でDLLの取込みできない
- TextBoxに半角数字のみの入力しかできないようにしたい
- VS2008でActiveXの作成がしたい
- コマンドプロンプトのERRORLEVELについて!
- VB6からVB.NET作成DLL呼び出し時のエラー
- VB 2008 DLL作成の方法
- ファイルやディレクトリの存在確認を行う方法
- 「管理者権限で実行」を選ばなくても、最初から管理者権限で実行させたいの
関連するQ&A
このカテゴリで人気のQ&Aランキング
- 4エクセル(Excel) ワイルドカード *...
- 5文字列を含まないという正規表現は?
- 6他言語で言うcontinue文
- 7TextBoxに半角数字のみの入力しかで...
- 8VBAで別エクセルファイルから指定エ...
- 9Functionの戻り値を配列にしたいの...
- 10Sub ***( ) と Private Sub ***( ) ...
- 11VBAマクロでCSV出力
- 12エクセルVBAでファイル・シート名を...
- 13VB上で実行中の無限ループの止め方
- 14Excelで400というエラー
- 15定数配列の書き方
- 16動的配列が存在(要素が有る)か否か...
- 17DoEvents関数って何?
- 18VB.NETのコンボボックスについて
- 19DataGridViewで、選択した行の値を...
- 20VBAでUTF-8文字を読込、Excelに出力...