|
일반적으로 다른 dll과 연동이나 API호출시 콜백함수는 순수한 함수입니다. 메소드가 아니라....
님이 작성하신 것은 TForm1의 메소드입니다. 일반함수로 바꾸세요.
ppt 님이 쓰신 글 :
: 먼저 읽어주셔서 감사합니다.
: VC++로 작성된 DLL에 데이터를 받아올 콜백함수를 등록하려 합니다.
: 아래와 같이 작성을 했는데 어째 제대로 동작을 하지 않는 것 같아 질문드립니다.
: 답변 부탁드릴께요.
:
: VC로 작성된 dll안에는 아래와 같이 선언되어 있습니다.
: bool callback
: {
: void __stdcall ReadData(char *szbuf, int nlen)
: }
:
: 위 dll에서 특정 이벤트가 발생하면 빌더에 선언된 함수로 값을 받아 오려 하는데 함수 포인터를 사용해 본적이
: 없어 좀 어렵네요... ^^;
:
: // 선언(DLL함수)
: typedef bool __stdcall (*pCallBack)(AllocBuffer);
:
: // 이런식으로 선언을 해도 되는지......
: void __fastcall TForm1::AllocBuffer(char* szbuf, int nlen)
: {
: ..... 데이터 처리
: }
:
: //아래와 같이 테스트를 해봤는데 잘 안되네요..
: void __fastcall TForm1::Button1Click(TObject *Sender)
: {
: HINSTANCE hInst;
: pCallBack CallBack;
:
: hInst = LoadLibrary("test.dll");
:
: if (hInst)
: ShowMessage("Load Success");
: else
: ShowMessage("Load Fail");
:
: CallBack = (pSetCallBack)GetProcAddress(hInst, "testfunc");
:
: if (CallBack)
: {
: if (CallBack(AllocBuffer)) // 콜백함수 등록
: ShowMessage("Call Success");
: else
: ShowMessage("Call Fail");
: }
: }
|