下記の様に簡単な加減算をするメソッドを記述した。
using System; using System.Collections.Generic; using System.Text; namespace ComSample { public class Expr { public int Add(int a, int b) { return a + b; } public int Sub(int a, int b) { return a - b; } } } |
このまま「ビルド」→「ソリューションビルド」をすると普通のクラスライブラリ(DLL)
が出来てしまうので、ActiveXコントロールにするには、プロジェクトのプロパティを
開いて下記の設定をする。
「アプリケーション」の「アセンブリ情報...」を開いて「アセンブリをCOM参照可能にする」にチェックを入れる。
次に、ビルドの出力の「COM相互運用機能の登録」にチェックを入れる。
regasm.exe ComSample.dll |
ActiveXコントロールは、
「名前空間.ユーザコントロールのクラス名」
という ProgId で公開される。
package require tcom set ax [::tcom::ref createobject "ComSample.Expr"] $ax Add 10 20 => 30 $ax Sub 10 20 => -10 |
このように、Tclから.NETのクラスライブラリに直接アクセスできるので、
tcomとtcltestを組み合わせればクラスライブラリの回帰テストができる。
ただし、レジストリ登録は面倒なので、.NET framework 2.0のReg-Free COM技術を使って回避したい。