假设 CallFun 的原型如下:
void CallFun(LPCSTR);在DLL里,
typedef void (*callFun)(LPCSTR);
callFun CallFun = NULL;
__declspec(dllimport) void SetCallFun(callFun fun)
{
    CallFun = fun;
}
DLL里需要调用时,执行 CallFun("字符串");在EXE里:
typedef void (*callFun)(LPCSTR);
__declspec(dllexport) void SetCallFun(callFun fun);
SetCallFun(CallFun);

解决方案 »

  1.   

    => jishiping(JSP 季世平) 我test一下  编译有误入如下:e:\cgmt\yzl\cgmtcad\cgmtdraw.h(24) : error C2491: 'SetCallFun' : definition of dllimport function not allowedwhy???
      

  2.   

    //
    // in dll
    //
    typedef void (*CallFuncPtr)(void);__declspec(dllexport) void SetAndCallFunc( DWORD dwFuncPointer )
    {
    (*(CallFuncPtr)dwFuncPointer)();
    }// 
    // in client side
    //typedef void (*CallFuncPtr)(void);void CallBackFunc()
    {
    MessageBox(NULL,"","",MB_OK);
    }int APIENTRY WinMain(HINSTANCE hInstance,
                         HINSTANCE hPrevInstance,
                         LPSTR     lpCmdLine,
                         int       nCmdShow)
    {
      SetAndCallFunc( (DWORD)(CallFuncPtr)CallBackFunc ); return 0;
    }