今日はいろいろ調査のために試験プログラムを書いた。今まで、C#アプリexe→C#クラスdll→C#クラスdll→ManagedC++クラスdll→C++COMという構成で正しく動いていたアプリから、C#クラスDLL以下をごそっと強奪して再利用しようと目論んでいる。)が返ってきてしまうという問題でつっかえています。正しく動いていたアプリとの違いは、一番上が、C#で書かれているかC++で書かれているかの違い。出力を見る限りでは、COMのDLLの読み込みはされているので、CoCreateInstance自体はできている模様。CoCreateInstanceをIUnknown*で受けるとちゃんと取れる。対象のインターフェースにQueryInterfaceをかけるとやっぱりエラー。本当にこのクラスで正しく動くのか、すんげぇシンプルなテストプログラムを書いて実験。C#アプリexe→C#クラスdll→C#クラスdll→ManagedC++クラスdll→C++COMC#アプリexeはほとんど空っぽで下のC#のクラスのインスタンスを作って、メソッド一発初期化かけるだけ。あれれ?ちゃんと動く。次に、C++があかんのかと思い、シンプルなテストプログラムをC++で作成。C++アプリexe→C#クラスdll→C#クラスdll→ManagedC++クラスdll→C++COMC#のときと同様にほとんど空っぽで下のC#のクラスのインスタンスを作って、メソッド一発初期化かけるだけ。あれれれ?ちゃんと動く。NPモジュールに何か悪さしているものがいるらしい。テストプログラムと何が違うんだろう。