C++ & C# 사이에서 통신하는 데 COM을 사용하고 있습니다. 내 문제는 인터페이스가 다른 C++ 클래스에 의해 다시 구현되는 C++ 클래스에 의해 구현 된 인터페이스 객체 &으로 매개 변수를 포함하는 메서드를 구현했습니다. C#에서 내 코드 시나리오가 아래에 언급되어C#에서 상속받은 C# 인터페이스
다음은 C++ 비아 컴에 노출 대해 ComVisible을있는 클래스 먼저뿐만 아니라 ITest 인터페이스namespace Example
{
public class First:ITest
{
void GetObjectOfC#Interface(ISample sample);
}
}
namespace Example
{
Interface ISample
{
void Test();
}
}
. IS 예제 인터페이스는 COM에서 노출되었지만 C# 클래스에서는 구현되지 않았습니다. C++에서
코드 시나리오 :
이 SampleFirst 클래스는 다시 다음과 같이 또 다른 C++ 클래스 헤더 파일에 상속됩니다Class SampleFirst: public Example::ISample
{
};
:
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);
}
여기에서는 Inheritanc을 고려하여 samplePtr에 할당 된 동일한 클래스 개체를 의미합니다. 전자 기능. .tli 파일에서 HResult를 실패합니다. 같은 해결 방법이 있으면 알려주십시오.
[이] (http://stackoverflow.com/questions/1742848/why-exactly-do-i-need-an- 충분하다 explicit-upcast-implement-query -interface-in-a/2812938 # 2812938) 내 문제를 해결하는 데 도움이됩니다. – SkoolBoyAtWork