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, 如果也失败,系统怎么处理的就不清楚了。
[解决办法]
你干脆搞个你代码工程的链接吧,调调就知道了,看真麻烦