|
COM을 사용하여 Server 를 Client에 연결하려고 합니다. 원래제작사의 지시에 따르면
CoInitialize(Null);
AfxOleInit();
IQxdm disp; IQXDM 이 Object입니다.
result = disp.CreateDispatch("QXDM.Application", e);
또는
result = disp.CreateDispatch("IID_QXDM", e);
이런식으로 하라고 해서 아래처럼 했는데 Error만 발생하는군요..
COM을 시작한지 별루 안되서 COCLASS DEFAULT INTERFACE CREATOR 에서 Interface가
정의된것만 해본지라 이런경우에는 어떻게 해야 하는지 모르겠네요..
이거가지고 버벅거린게 벌써 한달째네요... 쩝...
참고로 TLB화일 같이 첨부합니다.
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
#include "qxdm_TLB.cpp"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
int result;
CoInitialize(NULL);
// AfxOleInit(); <-- 이거 살리면 error나서 그냥 죽였습니다.
IQxdm disp;
result = disp.CreateDispatch("QXDM.Application",e);
}
//---------------------------------------------------------------------------
[C++ Error] Unit1.cpp(22): E2352 Cannot create instance of abstract class 'IQxdm'
[C++ Error] Unit1.cpp(22): E2353 Class 'IQxdm' is abstract because of '__stdcall IDispatch::GetTypeInfoCount(unsigned int *) = 0'
[C++ Error] Unit1.cpp(23): E2316 'CreateDispatch' is not a member of 'IQxdm'
[C++ Error] Unit1.cpp(23): E2451 Undefined symbol 'e'
|