VC6.0から呼び出せるライブラリをC#.NETで作成したいです。


VC6.0については全く知識がないので、VC6.0から呼び出せるものにはどういうもの(COM dll etc.)があるのか、またその手段(これが分かってません)。そしてそれをC#.NETで作成するにはどのようにすればよいのか。特に最も簡便な方法は何か。といった辺りの情報を探しています。よろしくお願いします。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2004/07/23 14:34:17
  • 終了:--

回答(2件)

id:cx20 No.1

cx20回答回数607ベストアンサー獲得回数1082004/07/23 15:10:22

ポイント25pt

自分も .NET の開発をやったことが無いので

外していたらすみません。

C#、VB.NET で作成したコンポーネントは Managed DLL と呼ばれています。

これを、VB6.0 や VC++ から利用するには、

tlbexp.exe(タイプ ライブラリ エクスポータ)

というツールを使って、タイプ ライブラリを作成する

という方法があるようです。

http://www.microsoft.com/japan/msdn/library/ja/cptools/html/cpgr...

タイプ ライブラリ エクスポータ (Tlbexp.exe)

タイプ ライブラリ エクスポータ (Tlbexp.exe) の説明です。

id:esper

回答ありがとうございます。.tlbファイル自体は生成されました(わーい)。

しかし、警告が出ました。

>>

警告 : 構造体の参照型には[MarshalAs(UnmanagedType.Interface)] が必要です。

<<

中身の構造体の話かなぁ。外に出さないものは徹底的にinternal指定せねばならんとかでしょうか。

ところで、COMとして公開する場合、公開するInterface/Classのメソッド/プロパティにアトリビュートなどを追加しないといけないということでしょうか。この辺りの詳しい(というか最低限のことが書いてある分かりやすい)サイトはないですかねぇ〜「DispId」(←よく分かってない)とかも必要っぽいです。

金で買ったポイントに物を言わせて次の回答に期待します。

2004/07/23 16:45:09
id:cx20 No.2

cx20回答回数607ベストアンサー獲得回数1082004/07/23 17:25:21

ポイント25pt

http://www.microsoft.com/japan/msdn/library/ja/cpguide/html/cpco...

COM 相互運用機能のサンプル : COM クライアントと .NET サーバー

一応、サンプル(C# + VC++クライアント)がありましたのでリンクを貼っておきます。

http://www.microsoft.com/japan/msdn/library/ja/cpguide/html/cpco...

COM への .NET Framework コンポーネントの公開

MSDN ライブラリの↓このあたりのドキュメントが参考になると思います。

[.NET Framework]

 +[.NET Framework]

  +[.NET Framework を使用したプログラミング]

   +[アンマネージ コードとの相互運用]

    +[COM への .NET Framework コンポーネントの公開]

http://www.freeml.com/info/csharpll@freeml.com

C# language & libraries|みんなのHappyコミュニティ! freeml [フリー・エムエル]

また、C# 関連の話題でしたら、その方面の ML に参加するのが良いかもしれません。

私より的を得た回答を得られると思います。

Microsoft が主催する .NET 関連のコミュニティサイトです。

.NET 関連のリンク集です。参考まで。

id:esper

たびたびありがとうございます。

やはりそのスジのMLなどを利用した方が良いですよね。まぁ、はてなは勝手知ったるというか、ホームな感じが良いんですが。

ちなみに警告はやはりinternalにしたらなんとなく解消されました。

と、まぁひと段落したので続きは来週にします。ありがとうございました〜。

2004/07/23 17:57:41
  • id:esper
    結論

    当方の出した結論ですが。

    ・公開するクラス/インターフェイスに GuidAttribute を指定してあげること。(指定しないと毎回GUIDが変わって大変なことに)
    ・非公開のクラスは internal にすること。

    ぐらいがポイントになる要素で、意外とすんなり出来ちゃいました。
    ありがとうございました。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません