我使用COM在C++ & C#之間進行通信。我的問題是我已經實現了包含參數作爲接口對象&的方法,該接口是由C++類實現的,該類又由另一個C++類實現。 在C#我的代碼情景被提到如下:由C++繼承的C#接口
namespace Example
{
public class First:ITest
{
void GetObjectOfC#Interface(ISample sample);
}
}
namespace Example
{
Interface ISample
{
void Test();
}
}
的頭等艙以及ITest接口這些標記有ComVisible特性,暴露在C++通過COM。 ISample接口也暴露在COM中,但未由C#類實現。
代碼情景在C++:
Class SampleFirst: public Example::ISample
{
};
這SampleFirst類再次由如下面的另一C++類的頭文件繼承:
Class SampleSecond:public SampleFirst
{
public:
void MakeAnObject();
private:
Example::ITestPtr _testPtr;
Example::ISamplePtr _samplePtr;
};
和在SampleSecond.Cpp文件,
void SampleSecond::MakeAnObject()
{
_testPtr.CreateInstance(__uuidof(Example::First));
samplePtr=this;
_testPtr->GetObjectOfC#Interface(samplePtr);
}
這裏這意味着相同的類對象分配給samplePtr通過考慮Inheritanc e功能。 但在.tli文件中,失敗HResult.Please讓我知道如果任何解決方案相同。
[這](http://stackoverflow.com/questions/1742848/why-exactly-do-i-need-an- (2812938#2812938)有助於我解決我的問題。 – SkoolBoyAtWork