- PR -

VC# で COM を作成

1
投稿者投稿内容
なかむら
ベテラン
会議室デビュー日: 2001/10/22
投稿数: 67
投稿日時: 2004-12-28 11:03
VS.NET2003 を使用して VC# で COM を作成しています。
この COM を VC++6.0 のプログラムから使用しているのですが、COM を修正してビルドしなおした場合に、新しいタイプライブラリ使用してをVC++側のプログラムをリビルドしなおさないと、CreateInstance() でインスタンスが生成できなくなります。

VC# で COM を作成する場合、またはそれを VC++ から使用する場合に、何かやらなければならないことがあるのでしょうか?

よろしくお願いします。
渋木宏明(ひどり)
ぬし
会議室デビュー日: 2004/01/14
投稿数: 1155
お住まい・勤務地: 東京
投稿日時: 2004-12-28 11:20
引用:

この COM を VC++6.0 のプログラムから使用しているのですが、COM を修正してビルドしなおした場合に、新しいタイプライブラリ使用してをVC++側のプログラムをリビルドしなおさないと、CreateInstance() でインスタンスが生成できなくなります。



修正の度合いにもよるというのはご存知ですよね?

引用:

VC# で COM を作成する場合、またはそれを VC++ から使用する場合に、何かやらなければならないことがあるのでしょうか?



Visual Studio .NET で、C# クラスライブラリプロジェクトの「COM の相互運用機能に登録する」を true にしただけであれば、LIBID, CLSID はシステム登録時に自動生成されます。

これらを固定すれば、改善されるかもしれません。

LIBID は AssemblyInfo.cs 中に Guid 属性を、CLSID は、CoClass として公開する C# クラスに Guid 属性を追加することで明示的に指定できます。



_________________
// 渋木宏明 (Hiroaki SHIBUKI)
// http://hidori.jp/
// Microsoft MVP for Visual C#
//
// @IT会議室 RSS 配信中: http://hidori.jp/rss/atmarkIT/
Yuu
会議室デビュー日: 2002/12/16
投稿数: 2
投稿日時: 2004-12-28 11:26
こんにちわ

う〜んと 昔COM+で使ったきりなんで勘違いしてたらごめんなんだけど
インターフェースが変わったとか..
それとも、インターフェースを定義していないとかとか..
が原因な気がする...
きちんと、interfaceやGuidとか指定して作れば できるかな..(かなり自信ないですが^^
なかむら
ベテラン
会議室デビュー日: 2001/10/22
投稿数: 67
投稿日時: 2004-12-28 13:09
渋木宏明(ひどり)さん、Yuuさん、アドバイスありがとうございました。

教えていただいた通り、LIBID、CLSIDを固定することで問題なく動作するようになりました。
また一つ勉強させていただきました。

ありがとうございました。m(__)m
1

スキルアップ/キャリアアップ(JOB@IT)