7

从 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++ 项目),并且我花了很多时间试图根据这个假设来解决这个问题。但实际上它是完全不同的东西。为了帮助遇到此问题的其他人,我稍后会发布答案。

4

3 回答 3

13

作为切换到 Visual Studio 2012 的一部分,我还使用处理我所有 AssemblyInfo.cs 和 .rc 文件的自制程序更新了 .rc 文件中的程序版本号,并且它更改了 .rc 文件的编码。 rc 文件从 ANSI 到 UTF-8。并且 Microsoft 资源编译器无法正确读取 UTF-8 文件! http://social.msdn.microsoft.com/Forums/hu-HU/vcgeneral/thread/e212069d-678e-4ac8-957f-7d60d3e1c89f

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

于 2013-03-06T09:57:59.650 回答
2

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

#pragma code_page(65001)

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

于 2015-07-20T14:55:18.997 回答
1

您还可以在编译之前使用Pre-build 事件命令行来转换您的 UTF-8 源文件。

示例步骤:

  1. 从编译中排除您的 UTF-8 文件。

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

  3. 在 Pre-build 事件命令行中添加一个条目,将原始 UTF-8 文件转换为重命名文件为 UNICODE。这个工具可以帮助你。

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

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

于 2015-01-16T03:06:54.187 回答