朱金灿

最近做一个项目,基于公司的一个产品进行开发,使用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如下图:

单击该菜单,出现一个警告对话框,单击ok后我们再到VC 6.0去看一下,就会发现Win XP sp2 SDK的相关头文件和库文件已经包含进来,而且是在VC98目录的前面,如下图:

在VS 2003上直接建一个MFC应用程序,是可以直接使用OpenThread函数的。这次只是因为我要使用这个软件是使用VC 6.0开发的,直接使用VS 2003打开编译毫无疑问会遇到很多语法错误,如类型转换等错误,因为VS 2003的语法检查比VC 6.0要严格,解决这个问题要花费较多时间。

解决这个问题给了我一个思路:通过优先设置最新SDK的路径,可以让我们使用最新的SDK,同时又可以使用低版本的编译器编译工程,降低工程在不同版本编译器移植的成本。

‘OpenThread”: undeclared identifier 问题的解决之道相关推荐

  1. c2061 dword 语法错误_解决'PMIB_ICMP_EX':undeclared identifier

    FreeEIM 飞鸽传书编译问题总结,最近对FreeEIM 进行了更新,结果编译的时候出现了许多错误,是什么导致这些错误呢?我花了半天时间才得以解决,现在总结一下. ----------------- ...

  2. error C2065: : undeclared identifier 解决方法

    error C2065: 'IDD_VIDEONETDLG' : undeclared identifier 开发平台:VC++6.0 出现错误:error C2065: 'IDD_VIDEONETD ...

  3. error:use of undeclared identifier

    HLS中error:use of undeclared identifier 问题描述 在编写HLS代码过程中,使用流数据时报错,说我的标识符未声明.但是分明是定义了的,HLS编译器不认识. 错误位置 ...

  4. [Android]Android studio编译程序时报错: error: use of undeclared identifier ’free free(t);

    原文地址:https://blog.csdn.net/u010005281/article/details/78611389 问题描述:程序之前可以正常运行,后来更新了一系列部件之后编译不通过,报了好 ...

  5. Error C2065 'cout': undeclared identifier

    1 [问题背景]C++/MFC中出现 Error    C2065错误,即未定义xxx错误,而你使用的xxx是基础类库的,你心里想不可能不存在呀.当然排除你拼写错误的情况,咱不讨论这种情况. 2 [分 ...

  6. 'main' : function should return a value; 'void' return type assumed/////undeclared identifier

    'main' : function should return a value; 'void' return type assumed 'c' : undeclared identifier 在调试c ...

  7. 使用Ultra Librarian导入封装到AD18运行UL_Form.pas报错Undeclared identifier:ImportAscllData

    问题 在TI官网下载的封装库后在AD18中直接打开UL_Form.pas和UL_Import.pas两个文件,运行UL_Form.pas并导入.txt文件时报错Undeclared identifie ...

  8. C语言nullptr错误,编译错误'nullptr'未声明的标识符(Compile error 'nullptr' undeclared identifier)...

    编译错误'nullptr'未声明的标识符(Compile error 'nullptr' undeclared identifier) 我打算用Visual Studio 2008 Express编译 ...

  9. c语言编程undeclared,c语言中undeclared identifier是什么意思?

    "undeclared identifier"是指"未声明的标识符",是C语言中一种报错提示:一般是使用的变量或者函数没有定义,或者是定义的时候和调用的时候不一 ...

最新文章

  1. CMPP3.0 长短信实现方案
  2. GDCM:DICOM文件的输入和输出流测试程序
  3. python: 判断字符串是否为合法的json格式
  4. 使用named_mutex和named_condition配合实现读写锁
  5. 【问题收集·知识储备】Xcode只能选择My Mac,不能选择模拟器如何解决?
  6. linux中如何查看某个端口是否被占用,LINUX中如何查看某个端口是否被占用
  7. 北斗系统学习:JTT808协议初步解析
  8. 为什么有时不能正确定位到异常的发生位置?
  9. poj3414 Pots
  10. Java、JSP大学生助学贷款管理系统的设计与实现
  11. 毫米和像素怎么换算_像素和毫米怎么换算啊??
  12. php 视频分割,如何把一个视频分成两段或多段 视频切割软件
  13. java代码随机取名字
  14. 方法重写的一大两小两同
  15. APP“自动续费”,挖坑式赚钱有违商业伦理
  16. git push origin HEAD
  17. ST MCSDK 初探
  18. 【计算机组成原理】计算机组成原理背景
  19. php files 转数组,转 PHP文件上传$_FILES数组各键值含义说明
  20. 清明节海报设计软件测试,PS清明节海报设计教程

热门文章

  1. Java2实用教程第五版+第六章习题答案
  2. Android 入门之 安装镜像 (鉴于国内Google相关很多服务都无法访问)
  3. MATLAB学习笔记/包含登陆界面的GUI制作与美化
  4. .iloc函数的使用
  5. 关闭腾讯windows10的免费升级,checkmewin10.exe
  6. ThinkPad X200 安装XP系统
  7. ARFoundation系列讲解 - 35 AR看车二
  8. ubuntu下载安装一条龙服务
  9. python之禅中文原文_Python之禅
  10. CSS高级篇——圆角