2013-03-06 1260 views
3

從Visual Studio 2010切換到2012後,我得到了10個RC2135錯誤,這些錯誤在我的一個C++項目中看起來相當奇怪。由於RC文件的UTF-8編碼導致C++項目中的RC2135錯誤

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++項目或不能轉換),和我花了很多時間試圖爲基礎,以弄明白在這個假設。但實際上它完全不同。爲了幫助遇到這個問題的其他人,我會立即發佈答案。

回答

1

您還可以使用預編譯事件命令行在編譯之前轉換UTF-8源文件。

樣本步驟:

  1. 從編譯排除您的UTF-8文件。

  2. 讓你的UTF-8文件的副本,將其重命名

  3. 在預生成事件命令行添加一個條目,原來的UTF-8文件轉換爲重命名的文件作爲UNICODE。 This tool可能會幫助你。

    $(PROJECTDIR)\ TOOLS \ uniconv.exe UTF8 $(PROJECTDIR)\ DocumentBrowserUTF8.rc UCS2 $(PROJECTDIR)\ DocumentBrowser.rc

  4. 在構建腳本(在很多情況下,Visual Studio中.vcxproj文件),使其編譯轉換的文件而不是原始的UTF-8文件。

+0

'uniconv -decode utf-8 -in resource.utf8.rc -encode ucs-2 -out resource.rc' – ilyaigpetrov 2017-12-06 07:07:19

1

如果你答應永遠手工編輯的rc文件,你可以把這個在它開始和資源編譯器將編譯UTF-8像一個天使,

#pragma code_page(65001) 

但是,一旦VS資源編輯器重新生成.rc文件,它將被全部搞亂。

+0

所以如何避免這種情況,當你使用VS res編輯器? – 2017-03-28 14:54:59

相關問題