所有源文件似乎编译得很好。
然而,由于我实现了这一点,我得到一个新的编译器错误:
1>------ Erstellen gestartet: Projekt: OpenLieroX, Konfiguration: Debug Win32 ------
1>Der Buildvorgang wurde am 29.03.2012 23:57:39 gestartet.
1>InitializeBuildStatus:
1> Aktualisieren des Timestamps von "Debug\OpenLieroX.unsuccessfulbuild".
1>ClCompile:
1> Alle Ausgaben sind aktuell.
1> Alle Ausgaben sind aktuell.
1> Alle Ausgaben sind aktuell.
1> Alle Ausgaben sind aktuell.
1> Alle Ausgaben sind aktuell.
1> Alle Ausgaben sind aktuell.
1> Alle Ausgaben sind aktuell.
1> Alle Ausgaben sind aktuell.
1> Alle Ausgaben sind aktuell.
1> Alle Ausgaben sind aktuell.
1> Alle Ausgaben sind aktuell.
1> Alle Ausgaben sind aktuell.
1> Alle Ausgaben sind aktuell.
1> Alle Ausgaben sind aktuell.
1> Alle Ausgaben sind aktuell.
1> Alle Ausgaben sind aktuell.
1> Alle Ausgaben sind aktuell.
1> Alle Ausgaben sind aktuell.
1> Alle Ausgaben sind aktuell.
1> Alle Ausgaben sind aktuell.
1> Alle Ausgaben sind aktuell.
1> Alle Ausgaben sind aktuell.
1> Alle Ausgaben sind aktuell.
1> Alle Ausgaben sind aktuell.
1> Alle Ausgaben sind aktuell.
1> Alle Ausgaben sind aktuell.
1> Alle Ausgaben sind aktuell.
1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\string.h(54): warning RC4011: identifier truncated to '_CRT_SECURE_CPP_OVERLOAD_STANDA'
1>
1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\string.h(76): warning RC4011: identifier truncated to '_CRT_SECURE_CPP_OVERLOAD_SECURE'
1>
1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\yvals.h(367): warning RC4011: identifier truncated to '_DISABLE_DEPRECATE_STATIC_CPPLI'
1>
1>C:\Program Files (x86)\boost\boost_1_47\boost/config/suffix.hpp(83): warning RC4011: identifier truncated to 'BOOST_NO_CV_VOID_SPECIALIZATION'
1>
1>C:\Program Files (x86)\boost\boost_1_47\boost/config/suffix.hpp(92): warning RC4011: identifier truncated to 'BOOST_NO_LIMITS_COMPILE_TIME_CO'
1>
1>C:\Program Files (x86)\boost\boost_1_47\boost/config/suffix.hpp(102): warning RC4011: identifier truncated to 'BOOST_NO_LONG_LONG_NUMERIC_LIMI'
1>
1>C:\Program Files (x86)\boost\boost_1_47\boost/config/suffix.hpp(117): warning RC4011: identifier truncated to 'BOOST_NO_MS_INT64_NUMERIC_LIMIT'
1>
1>C:\Program Files (x86)\boost\boost_1_47\boost/config/suffix.hpp(133): warning RC4011: identifier truncated to 'BOOST_NO_TEMPLATE_PARTIAL_SPECI'
1>
1>C:\Program Files (x86)\boost\boost_1_47\boost/config/suffix.hpp(134): warning RC4011: identifier truncated to 'BOOST_BCB_PARTIAL_SPECIALIZATIO'
1>
1>C:\Program Files (x86)\boost\boost_1_47\boost/config/suffix.hpp(141): warning RC4011: identifier truncated to 'BOOST_NO_TEMPLATE_PARTIAL_SPECI'
1>
1>C:\Program Files (x86)\boost\boost_1_47\boost/config/suffix.hpp(142): warning RC4011: identifier truncated to 'BOOST_NO_ARRAY_TYPE_SPECIALIZAT'
1>
1>C:\Program Files (x86)\boost\boost_1_47\boost/config/suffix.hpp(149): warning RC4011: identifier truncated to 'BOOST_NO_TEMPLATE_PARTIAL_SPECI'
1>
1>C:\Program Files (x86)\boost\boost_1_47\boost/config/suffix.hpp(158): warning RC4011: identifier truncated to 'BOOST_NO_TEMPLATE_PARTIAL_SPECI'
1>
1>C:\Program Files (x86)\boost\boost_1_47\boost/config/suffix.hpp(159): warning RC4011: identifier truncated to 'BOOST_NO_PARTIAL_SPECIALIZATION'
1>
1>C:\Program Files (x86)\boost\boost_1_47\boost/config/suffix.hpp(169): warning RC4011: identifier truncated to 'BOOST_NO_TEMPLATED_ITERATOR_CON'
1>
1>C:\Program Files (x86)\boost\boost_1_47\boost/config/suffix.hpp(186): warning RC4011: identifier truncated to 'BOOST_NO_ARGUMENT_DEPENDENT_LOO'
1>
1>C:\Program Files (x86)\boost\boost_1_47\boost/config/suffix.hpp(186): warning RC4011: identifier truncated to 'BOOST_FUNCTION_SCOPE_USING_DECL'
1>
1>C:\Program Files (x86)\boost\boost_1_47\boost/config/suffix.hpp(341): warning RC4011: identifier truncated to 'BOOST_NO_0X_HDR_INITIALIZER_LIS'
1>
1>C:\Program Files (x86)\boost\boost_1_47\boost/config/suffix.hpp(344): warning RC4011: identifier truncated to 'BOOST_NO_0X_HDR_INITIALIZER_LIS'
1>
1>C:\Program Files (x86)\boost\boost_1_47\boost/config/suffix.hpp(566): warning RC4011: identifier truncated to 'BOOST_NO_EXPLICIT_FUNCTION_TEMP'
1>
1>C:\Program Files (x86)\boost\boost_1_47\boost/limits.hpp(22): warning RC4011: identifier truncated to 'BOOST_NO_LONG_LONG_NUMERIC_LIMI'
1>
1>C:\Program Files (x86)\boost\boost_1_47\boost/limits.hpp(23): warning RC4011: identifier truncated to 'BOOST_NO_MS_INT64_NUMERIC_LIMIT'
1>
1>C:\Program Files (x86)\boost\boost_1_47\boost/cstdint.hpp(300): error RC2177: constant too big
1>
1>C:\Program Files (x86)\boost\boost_1_47\boost/cstdint.hpp(300): fatal error RC1012: mismatched parenthesis : missing '
1>
1>Fehler beim Erstellen
我真的不明白为什么我会这样做。而且不是来自什么源文件,因为它不再编译任何源(因为所有源都已成功编译)。
答案 0 :(得分:5)
(重新发表评论,因此问题可以标记为已回答。)
您不应该使用资源编译器编译普通代码。
答案 1 :(得分:2)
虽然明确的答案在这里已经是正确的一些背景: MSVC资源编译器在char 31处截断宏名称。 类似的问题也出现在更新的系统头文件中,例如来自VC10或更高版本的系统头文件,这些头文件的宏名称定义超过31个字符。另请参阅M $的回复,他们简单地称之为“按设计”,而不是修复他们的RC.EXE:
http://connect.microsoft.com/VisualStudio/feedback/details/532929/rc4011-warnings-from-vc10-rc
宏名称大于31个字符的受影响系统头是自VC10 string.h,tchar.h,wchar.h,yvals.h以及可能还有更多... 另见:
答案 2 :(得分:2)
当尝试使用Visual Studio 2013编译Windows XP和POS Ready 2009作为目标时,我遇到了类似的问题。应用程序在Visual Studio 2013 (v120)
配置属性中使用标准Platform Toolset
设置编译正常但是当更改为Visual Studio 2013 - Windows XP (v120_xp)
以定位Windows XP时,我收到了编译错误:
>C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\include\winsock2.h(2752): fatal error RC10056:
跳转到WinSock2.h包含文件中的位置显示了一个使用__out_bcount_part_opt()
宏的函数原型。
看到此帖后,我意识到错误是资源编译器错误。进一步查看我发现的是源文件和资源文件中包含的头文件piflocal.h
包含WinSock2.h
头文件的包含。
换句话说,应用程序源代码有一个头文件piflocal.h
,其中包含资源文件resource.h
使用的头文件pif.rc
所需的定义以及C源代码文件。 piflocal.h
中的某些定义需要Microsoft标准头文件WinSock2.h
中的定义,因此WinSock2.h
文件#included into piflocal.h
使其可用。但是,当资源编译器作为拉入各种头文件的一部分,尝试将WinSock2.h
文件作为处理piflocal.h
的一部分进行处理时,它会遇到__out_bcount_part_opt()
宏并失败。
顺便说一下,__out_bcount_part_opt()
宏是Header Annotations used in Windows headers的一部分。
标题注释描述函数如何使用其参数和 回报价值。这些注释已添加到许多Windows中 头文件,以帮助您确保您正在调用Windows API 正确。如果您启用了可用的代码分析 使用Visual Studio 2005,编译器将生成6000级 如果您没有根据使用情况调用这些功能,则会发出警告 通过注释描述。您还可以添加这些注释 在您自己的代码中,以确保正确调用它。至 在Visual Studio中启用代码分析,请参阅您的文档 Visual Studio版本。
这些注释在Specstrings.h中定义。它们建立在 原语是标准注释语言(SAL)和标准注释语言的一部分 使用 declspec(" SAL *")实现。
然后,我对resource.h
和piflocal.h
标头文件进行了必要的源代码更改,以便pif.rc
中piflocal.h
所需的少数定义被移至{{1}编译resource.h
时,资源编译器不再包含或引入头文件piflocal.h
。
通过从资源编译器提取的头文件列表中删除pif.rc
,错误不再发生。
我不知道为什么这会使用标准的Visual Studio 2013设置进行编译,并且因为定位Windows XP及其变种而失败。
结论:如果您遇到此错误或类似错误,您很可能会在资源编译器中包含一个带有宏定义的头文件,该文件与资源编译器不兼容。