以下のように C++/CLI クラスを宣言しました
namespace testcominterface {
[ComVisible(true)]
[Guid("FFCA805F-8DAB-4AF8-A7B7-B488136E8177")]
public interface class ITestInterface
{
public :
void TestMethod();
};
[ComVisible(true)]
[Guid("E65F4772-54B5-4105-83E5-DCED24ABC815")]
[ClassInterface(ClassInterfaceType::AutoDual)]
[ComDefaultInterface(ITestInterface::typeid)]
public ref class testCoClass : ITestInterface
{
public:
virtual void TestMethod()
{
Console::WriteLine("testCoClass::TestMethod : Test method");
}
};
}
そして、ネイティブ C++ COM (TLB ファイルを #import して CoCreateInstance を使用) を介して "testCoClass" を作成したいのですが、常に "Class Not Registered" というエラーが発生します。「Regasm.exe」を使用してアセンブリを登録すると正常に動作しますが、アセンブリを登録したくありません。
このブログ投稿の手順に従いましたhttp://blogs.msdn.com/b/cheller/archive/2006/08/24/how-to-embed-a-manifest-in-an-assembly-let-me -count-the-ways.aspxを使用してマニフェストをアセンブリに埋め込みましたが、機能しませんでした。(このメソッドは常に C# アセンブリで機能しますが、これは C++/CLI アセンブリであることに注意してください。
提案をいただければ幸いです。