MSVC завершается с ошибками компилятора без компиляции каких-либо источников - PullRequest
3 голосов
/ 30 марта 2012

Все исходные файлы, похоже, скомпилированы нормально.

Однако, с тех пор как я этого добился, я получаю новую ошибку компилятора:

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

Я не совсем понимаю, почемуполучи это.И также не из какого исходного файла, потому что он больше не компилирует какие-либо источники (потому что все они были успешно скомпилированы).

Ответы [ 3 ]

5 голосов
/ 30 марта 2012

(Повторяю из комментария, чтобы вопрос мог быть помечен как отвеченный.)

Вы не должны компилировать обычный код с помощью компилятора ресурсов.

2 голосов
/ 10 марта 2016

При попытке использовать 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, а также исходными файлами на языке Си.Для некоторых определений в piflocal.h требуются определения из стандартного заголовочного файла Microsoft WinSock2.h, поэтому файл WinSock2.h был включен в piflocal.h, сделав его доступным.Однако, когда компилятор ресурсов, как часть извлечения различных заголовочных файлов, попытался обработать файл WinSock2.h как часть обработки piflocal.h, он столкнулся с макросом __out_bcount_part_opt() и завершился неудачей.

Кстати, макрос __out_bcount_part_opt() является частью аннотаций заголовков, используемых в заголовках Windows .

Аннотации заголовков описывают, как функция использует свои параметры и возвращаемое значение.Эти аннотации были добавлены во многие заголовочные файлы Windows, чтобы помочь вам убедиться в правильности вызова Windows API.Если вы включите анализ кода, который доступен начиная с Visual Studio 2005, компилятор выдаст предупреждения уровня 6000, если вы не вызываете эти функции в соответствии с использованием, описанным в аннотациях.Вы также можете добавить эти аннотации в свой собственный код, чтобы убедиться, что он вызывается правильно.Чтобы включить анализ кода в Visual Studio, см. Документацию для вашей версии Visual Studio.

Эти аннотации определены в Specstrings.h.Они построены на примитивах, которые являются частью стандартного языка аннотаций (SAL) и реализованы с использованием declspec ("SAL *").

Затем я внес необходимые изменения в исходный кодв заголовочные файлы resource.h и piflocal.h, чтобы немногие определения, необходимые для pif.rc из piflocal.h, были перемещены в resource.h, а файл заголовка piflocal.h больше не включался и не извлекался компилятором ресурсов, когдакомпиляция pif.rc.

При удалении WinSock2.h из списка файлов заголовков, извлеченных компилятором ресурсов, ошибка больше не возникает.

Я не знаю, почему это скомпилировано сстандартные настройки Visual Studio 2013 и не удалось настроить таргетинг на Windows XP и ее варианты.

Вывод: если вы столкнулись с этой ошибкой или схожей ошибкой, скорее всего, вы включили ее в компилятор ресурсов.файл заголовка с определением макроса, который несовместим с компилятором ресурсов.

2 голосов
/ 05 июля 2013

Хотя помеченный ответ уже верен, здесь есть некоторая предыстория: компилятор ресурсов MSVC усекает имена макросов до 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 и, возможно, некоторые другие ... см. Также:

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

...