阅读:1317回复:3
dll里的线程调用指针函数出错
dll线程创建如下
void (*gCallBack)(void); void callback(); void callback() { dword num=0; } DWORD SPL_Init(DWORD dwContext) { Tim_handle= CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)ThreadProc,NULL,0,NULL); CeSetThreadPriority(Tim_handle,THREAD_PRIORITY_TIME_CRITICAL); gCallBack=callback; return 1; } DWORD WINAPI ThreadProc(PVOID pArg) { (*gCallBack)(); return 1; } debug输出错误如下 Exception 00e Thread=83d18d94 Proc=a3f67a72 'device.exe' 2315563 PID:a3f67a72 TID:c3cfe302 0x83d18d94: AKY=00000009 PC=00000000(???+0x00000000) ESP=0825fc9c EA=00000000 请教 是什么原因啊 ? |
|
沙发#
发布于:2008-06-22 16:20
|
|
板凳#
发布于:2008-06-23 13:09
gCallBack=callback;提到创建线程前面调用,你新创建的线程优先级比较高,抢占了主线程,先运行了,而这时gCallBack=callback;还没有调到,所以出问题了。
|
|
地板#
发布于:2008-06-24 20:01
|
|