COM interop和System.InvalidCastException异常

时间:2013-02-02 03:11:36

标签: c# c++ com interop

我是在C#中编写COM对象的新手。我遇到了一个需要帮助的问题。

我有一个用C ++编写的名为ITest的COM接口。我使用tlbimp.exe为我的测试系统注册了这个接口的DLL创建了一个互操作。我写了一个使用这个ITest界面的C#测试应用程序,它工作正常。

我也在C#中编写另一个COM接口。该接口有一个采用ITest类型参数的方法。我有一个C ++程序需要使用此托管COM对象并调用此方法。当我运行我的C ++程序时,我看到以下System.InvalidCastException异常:

InvalidCastException:
0:000> !pe
Exception object: 03281b3c
Exception type:   System.InvalidCastException
Message:          Unable to cast COM object of type 'System.__ComObject' to interface type '.ITest'. This operation failed because the QueryInterface call on the COM component for the interface with IID '<Some GUID>' failed due to the following error: No such interface supported (Exception from HRESULT: 0x80004002 (E_NOINTERFACE)).
InnerException:   <none>
StackTrace (generated): <none>
StackTraceString: <none>
HResult: 80004002

C#COM接口的方法定义:

public void MyMethod(ITest pTest);

使用此COM接口的C ++代码:

ITest * pTest = NULL;
…
pTest gets assigned a valid pointer
…
hr = MyMethod(pTest);

有人可以指出我正确的方向并帮我调试这个问题吗?

0 个答案:

没有答案