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都是什么原因导致的
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都是什么原因导致的
if(!k)
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);
修改就可以用了。
为什么用GetModuleHandle之后就正常?
我估计是这个地方错了,你改成ca()试一下
typedef int( *pRead)(char*, char*, int);
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");
}
CA ca;
ca = (CA) GetProcAddress(hinstLib, "IsCorrect"); 要定义函数指针把,还是指针函数,名词搞不清除了