HINSTANCE hinstLib;
CA ca;
BOOL k;

hinstLib = LoadLibrary("db.dll");if (hinstLib != NULL) 

    ca = (CA) GetProcAddress(hinstLib, "IsCorrect"); 
    if (NULL != ca)
(ca)();     k = FreeLibrary(hinstLib); 
if(!k)
AfxMessageBox("ds");
    }-----------------------------------------------------------------------一个简单窗体的VC程序,按钮响应函数中加入上面的代码,执行到 FreeLibary 之后,窗体没有响应
为什么~
无法释放dll都是什么原因导致的

解决方案 »

  1.   

    (ca)(); ???   k = FreeLibrary(hinstLib); ===》FreeLibrary(hinstLib); 
    if(!k)
      

  2.   

    char *RDATA = new char[300];
    typedef int( *pRead)(char*, char*, int); 
    HINSTANCE hDll=NULL;
    pRead  tRead=NULL;    //定义新的函数名称
    HINSTANCE hinstDll=GetModuleHandle("db.dll");
    if(hinstDll==NULL)
    {
        hDll=LoadLibrary("db.dll");
    }
    tRead=(pRead)::GetProcAddress(hDll,"IsCorrect");tRead();FreeLibrary(hDLL); 
    修改就可以用了。
      

  3.   

    的确可以了,这是怎么回事?
    为什么用GetModuleHandle之后就正常?
      

  4.   

    (ca)(); 
    我估计是这个地方错了,你改成ca()试一下
      

  5.   

    问题出在这里吧
    typedef int( *pRead)(char*, char*, int);
      

  6.   

    typedef void (CALLBACK* CA)(void) ;
    CA ca = NULL ; 
    HINSTANCE hinstLib = NULL ;
    BOOL k;

    hinstLib = LoadLibrary(TEXT("db.dll"));if (hinstLib != NULL) 

        ca = (CA) GetProcAddress(hinstLib, "IsCorrect"); 
        if (NULL != ca)
    ca();     k = FreeLibrary(hinstLib); 
        if(!k)
    AfxMessageBox("ds");
    }
      

  7.   

    这里有问题
    CA ca;
    ca = (CA) GetProcAddress(hinstLib, "IsCorrect"); 要定义函数指针把,还是指针函数,名词搞不清除了