我现在想在我的程序里使用线程池技术,我调用的是QueueUserWorkItem函数,但是编译过程中出现“未声明的标识符”,我已经包含了<Windows.h>和<Winbase.h>,不知道还需要包含哪些头文件或链接哪些库,请各位高手指点,另外顺便问一下,处理线程池有没有更好的方法?先谢过了!!!!!!!!!!

解决方案 »

  1.   

    你的操作系统是Win2000以上版本吗?这个函数仅仅在win2000以上才可以
      

  2.   

    我的操作系统是Windows2000Server
      

  3.   

    好象还需要 Kernel32.lib这个库文件,而且需要定义一个宏#define  _WIN32_WINNT 0x500
    把这个库文件连接到你的程序中在像上面那样定义一个宏应该就可以了,试一试!
    祝你成功!
      

  4.   

    我找遍了包括文件也没有这个函数,是不是MSDN骗人的啊?
      

  5.   

    要下载最新的SDK 你的winbase.h文件太老了
      

  6.   

    98年版的VC6。0 winbase.h中没定义过QueueUserWorkItem这个函数
      

  7.   

    可能的原因:1.你的sdk版本不够新,没有此函数的定义。2.此函数未公开。事实上此函数在kernel32.dll中引出,你可以用typedef的方式调用
    typedef  DWORD (WINAPI *MYFUN)(DWORD, DWORD, DWORD )
    MYFUN    myfun;
    myfun = GetProcAddress(LoadLibrary("kernel32.dll"),"QueueUserWorkItem");
    ret=myfun(a,b,c);其中可能要数据强制转换。
    其中myfun = GetProcAddress(LoadLibrary("kernel32.dll"),"QueueUserWorkItem");
    的调用可能不成功。这时你可以用下面的方法:myfun = GetProcAddress(LoadLibrary("kernel32.dll"),(char *)0x00005678);
    其中的0x00005678为QueueUserWorkItem函数的引出序号。可以用vc的depends工具查到序号。
      

  8.   

    MSDN中有这个函数啊!我找到了,我的MSDN的版本是2002!
      

  9.   

    vcforever(霓裳羽衣)
    不爽就在MSDN里面有,VC的包括文件里面没有
    可能是SDK版本比较老的缘故?
      

  10.   

    MSDN2002有,但我的MSDN VS6.0里就没有这个函数
      

  11.   

    可以到微软的主页上去下一个新的SDK,VC6的SDK中没有这个函数(实际上几乎就没几个线程池的函数支持的,完成端口也没有)。