- ベストアンサー
VB2005でActiveXを作成したいです
はじめまして。 VB2005でActiveXのCOMを作成したいですが、 新規作成プロジェクトに ActiveXコンポーネントの項目がありません。 どのようにして作成するのでしょうか?
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
参考URLを見てみてください。 COMにするには、属性やプロジェクトのプロパティを設定するなどいくつかやるべきことがあるようです。
その他の回答 (2)
- うぃず(@Wizard_Zero)
- ベストアンサー率69% (344/495)
思いつく限りのチェック項目を。 COMで公開するクラスのCOM参照とCOMクラスがTrueになっているか、またプロジェクトの設定で「アプリケーション」グループの「アセンブリ情報」を開き、「アセンブリをCOM参照可能にする」にチェックが入っているか確認してください。 .NET Framework 2.0用のRegAsm.exeを使っていますか? C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\RegAsm.exe RegAsmは各.NETバージョンごとにありますので、異なるバージョンでは登録が失敗します。 Express Editionの場合、タイプライブラリの不足でエラーが発生することがあるようです。これは#1の参照URLを。 あと、エラーは日本語で表示されるはずなのですが日本語ランゲージパックでインストールされているでしょうか?(これは関係ないかも…)
補足
あの後、色々行いOleViewにて登録を確認しました。 しかし、実際に登録したDLLをVC++で使用してみたところ、 DLL読込時に失敗してしまいます。 VBでOCXのようなGUI要素をもったACTIVEXを作成したいのですが、 この場合、上記の方法で合っているのでしょうか?
- うぃず(@Wizard_Zero)
- ベストアンサー率69% (344/495)
プロジェクト自体は「クラスライブラリ」で作成し「COMクラス」を追加してください。 COM公開に必要なGUID等がソースコードに書き込まれています。 あとは普通にクラスを作ればOKです。(ご存知かと思いますが、COMではオーバーロードや引数付きコンストラクタが使えないのでご注意を) .NETで作成したCOMオブジェクトは当然.NET Frameworkが必要になります。また、レジストリへの登録もRegsvr32.exeではなくRegAsm.exeを使います。 COMの登録はこのへんが参考になるかと。 http://okwave.jp/qa4260192.html
補足
お返事有難うございます。 無事DLLを作成出来ましたが、 RegAsm.exeで 以下のエラーが発生します。 「RegAsm error:Failed to load 'xxx.dll' because it is not a valid. NET assembly」 .NETでコンパイルしたのですが、ロード出来ないようです。。。 何かよい解決策はございますか?
補足
コメント有難うございます。 つまりOCXは.net対応しておらず、 COMとして形式変換しないといけないんですね。。。 なんともやりづらいです。 それならダウングレードのVB6.0で開発した方が早そうですよ・・・