vs2010编译项目,intrin.h和winNT.h冲突的问题解决

一,问题描述
    本人最开始用的是vs2005,后来由于做手机开发,又安装了vs2008,这时候,项目中的某些文件出现编译错误,后来经过研究,发现原因是:Platform SDK安装到了vs2005的安装目录中,vs2008的项目包含路径中没有包含platfor SDK的include文件。没说的,自己果断加上,解决问题。
    后来,由于公司的要求,又要使用vs2010,所以,电脑上又安装了vs2010,编译项目,出现编译错误:“不允许重载函数“_interlockedbittestandreset”的第二个 C 链 ”,经过网上搜索,发现原因是,由于安装vs2010的时候,自动包含了vs2008中的项目包含目录作为父继承,所以把安装在vs2005中的platform SDK继承下来了。_interlockedbittestandreset函数的定义在platform SDK中的winNT.h和Windows SDK中的winNT.h都有定义。这样,项目中用到的intrin.h文件在调用_interlockedbittestandreset函数的时候,就发生了两个SDK的冲突。
二,解决办法
1,vs2010的项目VC++的包含目录中添加Windows SDK的Include目录。(注意要放到最前的位置,否则可能会出错误:
1>c:\program files\microsoft sdks\windows\v7.0a\include\objidl.h(11280): error C2061: 语法错误: 标识符“__RPC__out_xcount_part”
1>c:\program files\microsoft sdks\windows\v7.0a\include\objidl.h(11281): error C2059: 语法错误:“)”
1>c:\program files\microsoft sdks\windows\v7.0a\include\objidl.h(11281): fatal error C1903: 无法从以前的错误中恢复;正在停止编译)
2,打开目录编辑,去掉旧的platform SDK包含目录
1)打开目录C:\Documents and Settings\Administrator\Local Settings\Application Data\Microsoft\MSBuild\v4.0中的Microsoft.Cpp.Win32.user.props文件
2)<IncludePath>$(IncludePath);$(DXSDK_DIR)Include;$(EMERGENT_PATH)include;$(PHYSXINSTALLPATH)sdks\Physics\include</IncludePath>里去掉旧的platfrom SDK的include目录。
重新编译,搞定!
三,总结
类似的这个错误:
1>c:\program files\microsoft sdks\windows\v7.0a\include\objidl.h(11280): error C2061: 语法错误: 标识符“__RPC__out_xcount_part”
1>c:\program files\microsoft sdks\windows\v7.0a\include\objidl.h(11281): error C2059: 语法错误:“)”
1>c:\program files\microsoft sdks\windows\v7.0a\include\objidl.h(11281): fatal error C1903: 无法从以前的错误中恢复;正在停止编译
原因:
Windows SDK和其它库(如DirectX等)出现冲突。
解决方法如下:
把WindowsSDK的包含目录放在最前!
操作:在项目上单击右键—》属性—》配置属性—》VC++目录,修改“包含目录”,把 $(WindowsSdkDir)include 放在最前。重新编译,搞定!
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值