描述:
我在一个c++的console工程中使用
CreateTimerQueueTimer和CreateTimerQueue时,(下载了新的sdk库)编译通过,
但是链接时说"符号 __imp__CreateTimerQueueTimer@28 找不到",而CreateTimerQueue链接没有问题。
我查了一下它们都在WINBASE.H中定义的,应该是在同一个dll(好像是kernel32.LIB已包含了)下才对,为何一个找得到,一个找不到。
很奇怪。
有没有其它的机制实现定时处理功能?要求是在console工程中使用的。
如果有实例最好,一定额外开贴送分!!
解决方案1:
自己在winproc里面处理WM_TIMER响应?!
1,BOOL QueryPerformanceFrequency (LARGE_INTEGER *lpFrequency);
BOOL QueryPerformanceCounter (LARGE_INTEGER *lpCount);
要求计算机从硬件上支持精确定时器.在进行定时之前,先调用QueryPerformanceFrequency()函数获得机器内部定时器的时钟频率,然后在需要严格定时的事件发生之前和发生之后分别调用QueryPerformanceCounter()函数,利用两次获得的计数之差及时钟频率,计算出事件经历的精确时间。
2.通过调用timeSetEvent()函数,将需要周期性执行的任务定义在lpFunction回调函数中(如:定时采样、控制等),从而完成所需处理的事件。需要注意的是:任务处理的时间不能大于周期间隔时间。另外,在定时器使用完毕后,应及时调用timeKillEvent()将之释放。
__imp__CreateTimerQueueTimer@28 是经VC编译器处理过了的函数名,而CreateTimerQueueTimer是以SDK形式提供,其导出函数名应该就是CreateTimerQueueTimer
也就是说CreateTimerQueueTimer的声明前应该加extern "C",楼主可以查看一下winbase.h中是否加了,或者是楼主自己声明过CreateTimerQueueTimer而忘了再之前加extern "C"。
如果上面的方法无效,那只有抱歉了