アセンブリの関数をCOMとして公開する

.NET FrameworkはCOMの発展系として作られたので、通常の関数をCOMの関数であるかのように公開できます。公開の方法は言語によって異なりますが、COMVisibleAttributeという属性を利用すると簡単にできます。

作成したDLLは.NET Framework付属のREGASMコマンドを利用してCOMとして登録し、Visaul C++ 6.0等の古いアプリケーションで利用することが出来ます(当然実行環境に.NETのランタイムは必要)。

例えばVC++では以下の通り。


1.クラスを公開する

[ComVisible(true)]
ref class TestClass() { … };

2.COMとしてレジストリに登録する(この例ではタイプライブラリを作成)

> regasm TestClass.dll /tlb:TestClass.tlb

# 他にrgsファイルも作成できます

3.tlbを使ってアセンブリを利用する(従来の環境でも可能)

#import "TestClass.tlb"

なお、既定ではComVisible(true)になっている言語が多いため、1の作業は不要かもしれません。逆に公開する意図が無い場合、敢えてfalseにする事を推奨します。



[MSDN] ComVisibleAttribute クラス

Leave a Reply

Be the First to Comment!

Notify of
avatar
wpDiscuz