После перехода с Visual Studio 2010 на 2012 я получил 10 ошибок RC2135, которые выглядели довольно странно в одном из моих проектов C ++.
Error 1 error RC2135: file not found: 0x06 NamedPipesNative.rc 19 1 NamedPipesNative
Error 2 error RC2135: file not found: 1 NamedPipesNative.rc 28 1 NamedPipesNative
Error 3 error RC2135: file not found: 5 NamedPipesNative.rc 29 1 NamedPipesNative
Error 4 error RC2135: file not found: 5 NamedPipesNative.rc 30 1 NamedPipesNative
Error 5 error RC2135: file not found: 0x17L NamedPipesNative.rc 31 1 NamedPipesNative
Error 6 error RC2135: file not found: FILEOS NamedPipesNative.rc 37 1 NamedPipesNative
Error 7 error RC2135: file not found: 0x2L NamedPipesNative.rc 38 1 NamedPipesNative
Error 8 error RC2164: unexpected value in RCDATA NamedPipesNative.rc 41 1 NamedPipesNative
Error 9 error RC2135: file not found: BLOCK NamedPipesNative.rc 43 1 NamedPipesNative
Error 10 error RC2135: file not found: VALUE NamedPipesNative.rc 45 1 NamedPipesNative
К сожалению, я предположил, что это как-то связано с переходом на VS 2012 (он спросил, хочу ли я преобразовать проект C ++ или нет), и я потратил много времени, пытаясь выяснить это на основе этого предположения. Но на самом деле это было что-то совершенно другое. В надежде помочь кому-нибудь еще, кто сталкивается с этой проблемой, я отправлю ответ через мгновение.
В рамках перехода на Visual Studio 2012 я также обновил номер версии программы в файле .rc, используя самодельную программу, которая обработала все мои файлы AssemblyInfo.cs и .rc, и она изменила кодировку. RC-файл из ANSI в UTF-8. И Microsoft Resource Compiler не может правильно читать файлы UTF-8!
http://social.msdn.microsoft.com/Forums/hu-HU/vcgeneral/thread/e212069d-678e-4ac8-957f-7d60d3e1c89f
Поэтому решение заключается в том, чтобы перекодировать файл .rc в формат ANSI или UTF-16.
Если вы пообещаете всегда вручную редактировать файл .rc, вы можете поместить это в начало, и компилятор ресурсов скомпилирует utf-8 как ангел,
#pragma code_page(65001)
Но как только редактор ресурсов VS сможет восстановить файл .rc, все будет испорчено.
Вы также можете использовать Командная строка события перед сборкой конвертировать исходный файл UTF-8 перед компиляцией.
Примеры шагов:
исключить ваш файл UTF-8 из компиляции.
сделайте копию вашего файла UTF-8, переименуйте его
добавьте запись в командной строке события Pre-build, преобразовав исходный файл UTF-8 в переименованный файл как UNICODE. Этот инструмент может помочь вам.
$ (ProjectDir) \ tools \ uniconv.exe UTF8 $ (ProjectDir) \ DocumentBrowserUTF8.rc UCS2 $ (ProjectDir) \ DocumentBrowser.rc
в ваших сценариях сборки (во многих случаях Visual Studio .vcxproj файл) сделайте так, чтобы он компилировал преобразованный файл вместо исходного файла UTF-8.