我正在使用COM在C++和C#之间进行通信。我的问题是,我已经实现了包含参数作为接口对象的方法&这个接口是由C++类实现的,这个类也是由另一个C++类实现的。下面介绍了我在C#中的代码场景:
namespace Example
{
public class First:ITest
{
void GetObjectOfC#Interface(ISample sample);
}
}
namespace Example
{
Interface ISample
{
void Test();
}
}类第一和ITest接口--它们是COmVisible,通过Com公开给C++。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的类对象相同。但是在.tli文件中,HResult.Please失败了,如果有任何解决方案,请告诉我。
发布于 2013-12-12 11:23:48
为了解决上述问题,这个Link非常有用,因为我在实现QueryInterface时犯了一个愚蠢的错误,而它们对接口指针来说是混乱的。
https://stackoverflow.com/questions/20538410
复制相似问题