1>CVTRES : fatal error CVT1100: duplicate resource. type:TYPELIB, name:1, language:0x0409
1>LINK : fatal error LNK1123: failure during conversion to COFF: file invalid or corrupt
我正在尝试将现有的C ++项目从32位转换为64位,从VS6转换为VS2008。任何人都可以告诉我为什么会发生这种错误以及如何摆脱它?
答案 0 :(得分:0)
我有一条相同的错误消息,内容为CVT1100
... type:TYPELIB
,但就我而言,我包含了两个资源文件(将两个DLL合并为一个-多年前完成的)-{{ 3}},为资源指定一个不同的数字。但是他们已经有一个不同的号码。
MyProjectNameRes.rc:
:
:
3 TEXTINCLUDE
BEGIN
"1 TYPELIB ""MyProjectNameRes.tlb""\r\n"
"\0"
END
:
:
1 TYPELIB "MyProjectNameRes.tlb"
:
MyProjectName.rc
:
3 TEXTINCLUDE
BEGIN
"2 TYPELIB ""MyProjectName.tlb""\r\n"
"#include ""MyProjectNameRes\\MyProjectNameRes.rc"" // For Res dll union\r\n"
resources\r\n"
END
:
:
2 TYPELIB "MyProjectName.tlb"
#include "MyProjectNameRes\MyProjectNameRes.rc" // For Res dll union
:
事实证明,包含资源文件保留了“ 1”(我无法确切地说明原因),因此我将包含资源中的“ 1”替换为“ 3”。>
在MyProjectNameRes.rc中:
"1 TYPELIB ""MyProjectNameRes.tlb""\r\n"
-> "3 TYPELIB ""MyProjectNameRes.tlb""\r\n"
1 TYPELIB "MyProjectNameRes.tlb"
-> 3 TYPELIB "MyProjectNameRes.tlb"
*请注意,在移到Visual Studio 2017并修复它之后,我遇到了这个问题。
使用以下消息无法打开资源文件: Microsoft suggested
此文件中的资源使用未知语言:中性(默认)(未知子语言:0x3) 无法打开该文件。
如果我没有记错的话:和I had to leave only one language in my resource files.