C+中的错误RC2135+;由于RC文件的UTF-8编码而导致的项目 从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++项目),我花了很多时间试图根据这个假设来解决问题。但事实上,情况完全不同。为了帮助遇到此问题的其他人,我将在稍后发布答案。

C+中的错误RC2135+;由于RC文件的UTF-8编码而导致的项目 从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++项目),我花了很多时间试图根据这个假设来解决问题。但事实上,情况完全不同。为了帮助遇到此问题的其他人,我将在稍后发布答案。,c++,resource-files,rc,C++,Resource Files,Rc,作为切换到Visual Studio 2012的一部分,我还使用一个处理所有AssemblyInfo.cs和.rc文件的自制程序更新了.rc文件中的程序版本号,它将.rc文件的编码从ANSI更改为UTF-8。而且Microsoft资源编译器无法正确读取UTF-8文件! 因此,解决方案是将.rc文件重新编码为ANSI或UTF-16。您还可以在编译之前使用预编译事件命令行转换UTF-8源文件 示例步骤: 从编译中排除UTF-8文件 制作UTF-8文件的副本,重命名它 在预构建事件命令行中添加一个条

作为切换到Visual Studio 2012的一部分,我还使用一个处理所有AssemblyInfo.cs和.rc文件的自制程序更新了.rc文件中的程序版本号,它将.rc文件的编码从ANSI更改为UTF-8。而且Microsoft资源编译器无法正确读取UTF-8文件!


因此,解决方案是将.rc文件重新编码为ANSI或UTF-16。

您还可以在编译之前使用预编译事件命令行转换UTF-8源文件

示例步骤:

  • 从编译中排除UTF-8文件

  • 制作UTF-8文件的副本,重命名它

  • 在预构建事件命令行中添加一个条目,将原始UTF-8文件转换为重命名为UNICODE的文件。我可以帮你

    $(ProjectDir)\tools\uniconv.exe UTF8$(ProjectDir)\DocumentBrowserUTF8.rc UCS2$(ProjectDir)\DocumentBrowser.rc

  • 在构建脚本中(在许多情况下是Visual Studio.vcxproj文件),编译转换后的文件而不是原始UTF-8文件


  • 如果你保证总是手工编辑.rc文件,你可以把它放在它的开头,资源编译器会像天使一样编译utf-8

    #pragma code_page(65001)
    

    但是一旦VS资源编辑器重新生成.rc文件,它就会变得一团糟。

    uniconv-解码utf-8-in resource.utf8.rc-编码ucs-2-out resource.rc