2023年6月21日发(作者:)
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 filesmicrosoft sdkswindowsv7.0aincludeobjidl.h(11280): error C2061: 语法错误: 标识符“__RPC__out_xcount_part”
1>c:program filesmicrosoft sdkswindowsv7.0aincludeobjidl.h(11281): error C2059: 语法错误:“)”
1>c:program filesmicrosoft sdkswindowsv7.0aincludeobjidl.h(11281): fatal error C1903: ⽆法从以前的错误中恢复;正在停⽌编译)
2,打开⽬录编辑,去掉旧的platform SDK包含⽬录
1)打开⽬录C:Documents and SettingsAdministratorLocal SettingsApplication DataMicrosoftMSBuildv4.0中的⽂件
2)
重新编译,搞定!
三,总结
类似的这个错误:
1>c:program filesmicrosoft sdkswindowsv7.0aincludeobjidl.h(11280): error C2061: 语法错误: 标识符“__RPC__out_xcount_part”
1>c:program filesmicrosoft sdkswindowsv7.0aincludeobjidl.h(11281): error C2059: 语法错误:“)”
1>c:program filesmicrosoft sdkswindowsv7.0aincludeobjidl.h(11281): fatal error C1903: ⽆法从以前的错误中恢复;正在停⽌编译
原因:
Windows SDK和其它库(如DirectX等)出现冲突。
解决⽅法如下:
把WindowsSDK的包含⽬录放在最前!
操作:在项⽬上单击右键—》属性—》配置属性—》VC++⽬录,修改“包含⽬录”,把 $(WindowsSdkDir)include 放在最前。重新编译,搞定!
2023年6月21日发(作者:)
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 filesmicrosoft sdkswindowsv7.0aincludeobjidl.h(11280): error C2061: 语法错误: 标识符“__RPC__out_xcount_part”
1>c:program filesmicrosoft sdkswindowsv7.0aincludeobjidl.h(11281): error C2059: 语法错误:“)”
1>c:program filesmicrosoft sdkswindowsv7.0aincludeobjidl.h(11281): fatal error C1903: ⽆法从以前的错误中恢复;正在停⽌编译)
2,打开⽬录编辑,去掉旧的platform SDK包含⽬录
1)打开⽬录C:Documents and SettingsAdministratorLocal SettingsApplication DataMicrosoftMSBuildv4.0中的⽂件
2)
重新编译,搞定!
三,总结
类似的这个错误:
1>c:program filesmicrosoft sdkswindowsv7.0aincludeobjidl.h(11280): error C2061: 语法错误: 标识符“__RPC__out_xcount_part”
1>c:program filesmicrosoft sdkswindowsv7.0aincludeobjidl.h(11281): error C2059: 语法错误:“)”
1>c:program filesmicrosoft sdkswindowsv7.0aincludeobjidl.h(11281): fatal error C1903: ⽆法从以前的错误中恢复;正在停⽌编译
原因:
Windows SDK和其它库(如DirectX等)出现冲突。
解决⽅法如下:
把WindowsSDK的包含⽬录放在最前!
操作:在项⽬上单击右键—》属性—》配置属性—》VC++⽬录,修改“包含⽬录”,把 $(WindowsSdkDir)include 放在最前。重新编译,搞定!
发布评论