OpenThread的解决之道

最近做一个项目,基于公司的一个产品进行开发,使用VC 6.0 进行开发,使用到 Win API 函数 OpenThread 函数,编译时出现: ‘OpenThread”: undeclared identifier 的问题。我查了一下 msdn, 其配置要求是:

 

Requirements

  Windows NT/2000/XP: Included in Windows 2000 and later.
  Windows 95/98/Me: Included in Windows Me.
  Header: Declared in Winbase.h; include Windows.h.
  Library: Use Kernel32.lib.

 

  我很奇怪,这个 VC 6.0 应该支持的啊。开始我以为这是缺补丁之故,把 VC 6.0sp6 装上(之前已经安装了 sp5 ),编译依然出现 ‘OpenThread”: undeclared identifier 的错误。我上网查了一下资料,发现是 Platform SDK 版本过低的缘故,于是到网上下载了 Win XP sp2 SDK ,然后在 VC Tools ——〉 Option 菜单的 Include Files Library Files Win XP sp2 SDK 的相关头文件和库文件的路径添加进去,然后编译程序,发现依然出现:

‘OpenThread”: undeclared identifier 的错误。

 

  我又查了一下 MSDN, 发现 OpenThread 函数是在 Winbase.h 声明的。我把 VC 安装目录下的 VC98 文件夹的 Winbase.h Microsoft Platform SDK for Windows XP SP2 目录下的 Winbase.h 都打开比较了一下,发现在 Microsoft Platform SDK for Windows XP SP2 目录下的 Winbase.h OpenThread 函数有声明,而 VC98 文件夹的 Winbase.h 则没有。由此我猜到了原因所在:因为在 Tools ——〉 Option 菜单的 Include Files Library Files VC98 的头文件和库文件设在 Microsoft Platform SDK for Windows XP SP2 的前面,因此编译器肯定是优先使用 Winbase.h ,而不使用 Microsoft Platform SDK for Windows XP SP2 目录下的 Winbase.h ,因此解决办法是在 Tools ——〉 Option 菜单的 Include Files Library Files 把二者的顺序挪一下,把把 Win XP sp2 SDK 的相关头文件和库文件放在 VC98 的头文件和库文件的前面,让编译器优先使用。那么能不能把 VC98 的头文件和库文件在 Tools ——〉 Option 菜单的 Include Files Library Files 直接删除呢?答案是不行的,因为 Microsoft Platform SDK for Windows XP SP2 并不包含所有 VC98 目录下的头文件和库文件,如 expct.h msvcrt.lib

 

  实际上后来我发现安装完Microsoft Platform SDK for Windows XP SP2 在开始菜单上有一组菜单,其中的一个菜单项是:Register PSDK Directorues with visual studio 如下图:

你可能感兴趣的:(OpenThread的解决之道)