別のスレッドでも質問したのですが、
はかばかしい回答が得られなかったので、
こちらに書かせていただきます。

C#とCOM(C++)の相互運用の問題です。

void SomeClass::AAA(VARIANT FAR* var);
という関数をVS.netにインポートしたところ
SomeClass {
void AAA(ref Object obj){}
}
となりました。

これを以下の通り使用すると「種類が一致しません」
という例外が発生してプログラムが中断してしまいます。

Byte b; // 上記のVARIANT型はcharとしてつかわれているので、
Object obj = b;
AAA(ref obj); // ここで例外が発生します。

この関数はVARIANT型のポインタを渡して
値を取得するものです。同じような関数が複数あり
大変困っています。どうかよろしくお願いします。