1
의 파라미터로 인터페이스를 통과.는 I 네이티브 C++ DLL 및 두 개의 클래스가 ATL
InterfaceForClassA :
STDMETHODIMP CInterfaceForClassA::createClassAObject(void)
{
ClassA* Aobject = new ClassA();
return S_OK;
}
STDMETHODIMP CInterfaceForClassA::setNumberInClassA(SHORT pVal)
{
if(Aobject != NULL)
Aobject->setNumber(pVal);
return S_OK;
}
STDMETHODIMP CInterfaceForClassA::getNumberInClassA(SHORT* pVal)
{
if(Aobject != NULL)
*pVal = Aobject->getNumber();
return S_OK;
}
InterfaceForClassB :
IInterfaceForClassA* clsAInterface;
STDMETHODIMP CInterfaceForClassB::setClassA(IInterfaceForClassA * val)
{
val->QueryInterface(IID_IInterfaceForClassA,(void**)clsAInterface;
}
STDMETHODIMP CInterfaceForClassB::getClassA(IInterfaceForClassA ** returnVal)
{
clsAInterface->QueryInterface(IID_IInterfaceForClassA,(void**)returnVal);
}
그리고 마지막으로 내가 C# 프로젝트에 ATL DLL을 포함 교류 # 프로젝트를 가지고 내가 ATL의 DLL 클래스 전화 :
InterfaceForClassA clsa1 = new InterfaceForClassA();
clsa1.createClassAObject();
clsa1.setNumberInClassA(12);
InterfaceForClassB clsb = new InterfaceForClassB();
clsb.setClassA(clsa1);
InterfaceForClassA clsa2 = new InterfaceForClassA();
clsa2 = clsb.getClassA();
Console.WriteLine("number: " + clsa2.getNumberInClassA());
을
및 C# 프로젝트를 실행할 때 위의 마지막 줄에 NullReferenceException 오류가 발생합니다. 나 좀 도와 줄 수있어?