3

所有源文件似乎編譯正常。MSVC因編譯器錯誤而失敗,無需編譯任何源碼

但是,因爲我實現了,我得到一個新的編譯器錯誤:

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 

我真的不明白,爲什麼我明白了。也不是來自哪個源文件,因爲它不再編譯任何源文件(因爲所有文件都已成功編譯)。

+2

你爲什麼要用資源編譯器編譯普通代碼? – ildjarn 2012-03-29 22:08:49

+0

哪些頭文件直接包含在您編譯的RC文件中? – Oleg 2012-03-29 22:09:14

+1

@ildjarn:感謝關於資源編譯器的提示。就是這樣。 (它包括一些其他源文件,以使版本宏保持不變。)(你應該把它變成一個真正的答案......) – Albert 2012-03-29 22:54:10

回答

5

(從評論轉貼這樣的問題可以被標記回答。)

你不應該編譯正常的代碼與資源編譯器。

2

雖然明顯答案就在這裏已經是正確的一些背景: 的MSVC資源編譯器在焦炭截斷也會發生與更新的系統頭像那些從VC10或更高版本已宏名超過規定31 類似問題的宏名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,可能有一些更多... 還看到:

http://social.msdn.microsoft.com/Forums/vstudio/en-US/ea289832-c48c-475b-a922-bf94d2ee54e4/vs2012-update-1-fatal-error-rc10056-in-c-project-when-v110xp-platform-is-chosen

+0

有什麼辦法可以解決這個問題嗎?編譯BLAT(開源)我得到「wchar.h(1018):致命錯誤RC10056」錯誤。任何修補程序? – Maverick 2016-06-14 17:39:42

0

當嘗試使用Visual Studio 2013年編譯Windows XP和POS準備2009年的目標,我遇到了類似的問題。編譯細跟在Platform Toolset配置屬性的標準Visual Studio 2013 (v120)設置應用程序然而,當改爲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,它包含資源文件pif.rc使用的頭文件resource.h所需的定義以及C源文件。 piflocal.h中的一些定義需要來自Microsoft標準頭文件WinSock2.h的定義,因此WinSock2.h文件被包含在piflocal.h中使其可用。但是,當資源編譯器作爲拉入各種頭文件的一部分嘗試處理WinSock2.h文件作爲處理piflocal.h的一部分時,它會遇到__out_bcount_part_opt()宏並失敗。

我那麼做了必要的源代碼更改resource.hpiflocal.h頭文件,以便通過pif.rcpiflocal.h需要一些定義移入resource.h和頭文件piflocal.h不再包含或由資源編譯器時被拉入編譯pif.rc

通過從資源編譯器拉入的頭文件列表中刪除WinSock2.h,錯誤不再發生。

我不知道爲什麼使用標準的Visual Studio 2013設置進行編譯,並針對Windows XP及其變體進行失敗。

結論:,如果你正在運行到這個錯誤或類似的錯誤,更可能要包括到資源編譯器宏定義是與資源編譯器不兼容的頭文件。