关于 DLL 调用 CreateThread就崩溃

#include<windows.h>DWORDWINAPIThreadProc(LPVOIDlpParameter//threaddata){MessageBox(NU... #include <windows.h>

DWORD WINAPI ThreadProc(
LPVOID lpParameter // thread data
)
{

MessageBox(NULL,"PK","",0);

return 0;

}

BOOL WINAPI DllMain(HINSTANCE p1, DWORD p2, LPVOID p3)
{

switch (p2)
{
case DLL_PROCESS_ATTACH:

HANDLE hjkhk;
DWORD charID;

hjkhk=CreateThread(NULL,0, ThreadProc,NULL,0,&charID);//执行这个函数宿主程序就崩溃 线程子程序什么代码也没有也会崩溃
//把CreateThread注释了 加个MessageBox(NULL,"PK","",0);就不会出错
//

// CloseHandle(hjkhk);

default:
;

}

return 0;}
你们说的有理
....
展开
 我来答
救赎削肾客
2012-09-22 · TA获得超过1186个赞
知道大有可为答主
回答量:1196
采纳率:0%
帮助的人:955万
展开全部
微软官方已经说了:
http://support.microsoft.com/kb/142243/en-us
至于解决案呢,上面也提到了
就是不建议在 DllMain 中的 DLL_PROCESS_ATTACH 情况下去创建新线程
可以把一个函数导出去,让exe在外部去调用,这是个不错的方法
智能体开发指导
2012-09-23 · 超过18用户采纳过TA的回答
知道答主
回答量:77
采纳率:0%
帮助的人:44.4万
展开全部
加载库的时候不能创建线程。
可以这么理解,因为加载库的时候,实际上这个段空间的环境还没有初始化完全,这时候再申请资源会导致内核级异常。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
0浮云追月0
2012-09-25 · TA获得超过266个赞
知道小有建树答主
回答量:159
采纳率:100%
帮助的人:102万
展开全部
CreateThread不安全,建议使用
_beginthread
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
一超独大
2012-09-24 · TA获得超过819个赞
知道小有建树答主
回答量:452
采纳率:100%
帮助的人:264万
展开全部
同意楼上两位
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式