뭐가 어찌 되었건 아래와같이 하니 호출 되네요.
//.DLL 소스 파일
void _export ExecuteContainerMethod(unsigned iMethod)
{
typedef void (*pMethod)(void);
pMethod containerMethod=(pMethod)iMethod;
containerMethod();
}
//.DLL 헤더 파일
extern "C"
{
void ExecuteContainerMethod(unsigned iMethod);
}
//.EXE 소스 파일
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
typedef void (__closure*pMethod)(void);
pMethod myMethod = &MethodCalledFromDLL;
unsigned iMethod = *(unsigned*)(void*)&myMethod;
ExecuteContainerMethod(iMethod);
}
//---------------------------------------------------------------------------
void TForm1::MethodCalledFromDLL(void)
{
ShowMessage("Method Executed In Main App Via DLL");
}
나엑스 님이 쓰신 글 :
:
:
:
:
:
:
: dll에서 c함수를 임포트 하여 사용하려 합니다. 그런데 이 함수가 파라미터로 함수 포인터를 갖고있습니다.
: 물론 c함수 파라미터죠.
:
: 이함수에 클래스 멤버 함수 포인터를 넘겨 줄 수 없을 까요? __closure를 쓰면 될 것 같기도 한데
: 답변 부탁드립니다.
:
:
:
|