首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

DLL编译无有关问题,但是无法FreeLibrary(),请各位帮看看,

2012-03-23 
DLL编译无问题,但是无法FreeLibrary(),请各位帮看看,在线等.主程序:HmyDLLLoadLibrary(a.dll)FreeLibr

DLL编译无问题,但是无法FreeLibrary(),请各位帮看看,在线等.
主程序:HmyDLL=LoadLibrary("a.dll"); 
  FreeLibrary(HmyDLL); 

DLL程序: 
int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void* lpReserved) 

  String x,y; 
  rp(x,y); 
  return 0; 

void rp(x,y); 

  x="xy"; 
  y="yx"; 

在主程序运行到HmyDLL=LoadLibrary("a.dll")时,一直都不动,无法运行到FreeLibrary(HmyDLL); 
当我到DLL中跟踪时发现程序运行到return 0时又回到起点int WINAPI DllEntryPoint(..),重新运行到 
..return 0 },接着就报错了!为什么会出现这样的情况?编译时是无问题的,在线等,请各位大哥帮帮! 


[解决办法]
跟踪一下,检查一下返回值
[解决办法]
switch (ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
case DLL_THREAD_ATTACH:
case DLL_THREAD_DETACH:
case DLL_PROCESS_DETACH:
break;
}

看楼主的描述,是在DLL_THREAD_ATTACH出的错
[解决办法]
return 0;表示加载没成功
[解决办法]
yes, dllmain返回的是个bool值, 0 表示失败, 据我所知, 静态链接的dll如果加载失败会反复重试, 动态加载的不知道具体情况, 如果dll_process_attach失败系统还会用dll_process_detach调用一次dllmain, 如果也失败,系统怎么处理的就不清楚了。
[解决办法]
你干脆搞个你代码工程的链接吧,调调就知道了,看真麻烦

热点排行