如何解决Visual Studio 2010 Ultimate中的CVT1100?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何解决Visual Studio 2010 Ultimate中的CVT1100?相关的知识,希望对你有一定的参考价值。
我正在研究一个使用qmake生成Visual Studio 2005项目文件的中型项目。我试图在Visual Studio 2010 Ultimate下构建它。由于qmake不支持此IDE,但我提供了转换助手转换我的解决方案。
在尝试构建时,我在其中一个子项目中收到以下错误:
CVTRES:致命错误CVT1100:重复资源。类型:版本,名称:1,语言:苏图语
在谷歌的结果告诉我之后,似乎在迁移到较新版本的Visual Studio时可能会发生此错误,但我不知道为什么以及那里推荐的黑客对我不起作用。
我已经尝试过的是将资源重命名为随机数,甚至在每次出现版本信息时都使用不同的“名称”。当我在读取错误并删除相应的.RC文件后再次构建项目时,它会工作一次。但这太糟糕了。
任何人的想法?提前致谢。
通过将Configuration Properties> Manifest Tool> Input and Output> Embed Manifest下的设置更改为NO,我在从VC ++ 2010迁移到2012时解决了这个问题。我不知道那是什么,但我查看了.manifest
文件的内容,看起来我可以活着而不会嵌入它。
在Dmitry Markin中替换else块,以递归方式更新所有项目文件
else: # recursively update all project files in current directory:
rootdir = os.getcwd()
for root, subFolders, files in os.walk(rootdir):
for filename in files:
if(filename.endswith('.vcxproj')):
filePath = os.path.join(root, filename)
print "file: %s" % (filePath)
updateProject(filePath)
我来这里寻找这个错误的答案。我很抱歉爆破了泡沫。没有一个答案适合我。我的错误是我已经定义了3个具有相同ID的MACRO。这就是我得到问题中提到的错误的原因。
错误显示之前我的代码:
#define IDB_MARKER_NORMAL_LINE 21**6**
#define IDB_MARKER_ARROW_LINE 21**6**
#define IDB_MARKER_DOTTED_LINE 21**6**
我改成了:
#define IDB_MARKER_NORMAL_LINE 21**6**
#define IDB_MARKER_ARROW_LINE 21**7**
#define IDB_MARKER_DOTTED_LINE 21**8**
错误很快!!!!!!!!!!
我有这个,我在resource.h中做了以下
#undef VS_VERSION_INFO
#define VS_VERSION_INFO 310
由于VS_VERSION_INFO在WinRes.h中被赋予了资源ID 1,所以只需要修复我的问题。
我最近用Qt 4.8.2和Visual Studio 2012解决了类似的问题.Qt 4.8.2不支持VS2012作为mkspec,所以我将win32-msvc2010
mkspec复制到win32-msvc2012
(将_MSC_VER
更改为1700)并使用了其他一些解决方法(QtWebKit修复等) - 你可以通过互联网找到它们用VS2012构建Qt 4.8.2。但是qmake并不知道VS2012 .vcxproj
项目文件,所以它继续生成VS2010项目。在VS中将这些项目文件转换为新的2012格式后,出现上述错误。
解决方案是在所有配置(Debug和Release)中从构建中排除生成的.res
文件。要执行此操作,请在解决方案资源管理器中打开“生成的文件”文件夹,右键单击.res
文件,打开“属性”,从下拉列表中选择“所有配置”,然后将“常规”部分的“从构建中排除”属性设置为“是” 。
每次都用手重复这些动作是相当繁琐的,所以我编写了Python脚本来实现自动化。您可以使用它(风险自负!)更新qmake生成的.vcxproj
文件。
import sys import os from xml.etree import ElementTree def updateProject(filename): def getXmlns(tag): return tag[1:].split('}')[0] tree = ElementTree.parse(filename) root = tree.getroot() xmlns = getXmlns(root.tag) for cb in root.iter('{' + xmlns + '}CustomBuild'): if(not 'Include' in cb.attrib): continue if(not cb.attrib['Include'].endswith('.res')): continue for excl in cb.iter('{' + xmlns + '}ExcludedFromBuild'): if('Condition' in excl.attrib): del excl.attrib['Condition'] # delete ExcludedFromBuild condition ElementTree.register_namespace('', xmlns) tree.write(filename) if(len(sys.argv)>=2): # use project files specified in command line: for i in range(1, len(sys.argv)): updateProject(sys.argv[i]) else: # update all project files in current directory: for filename in os.listdir(os.getcwd()): if(filename.endswith('.vcxproj')): updateProject(filename)
感谢Xandy指出你需要将工作目录传递给listdir()
以使脚本在Python 2中工作。
如果您在编译时遇到此错误(通常是从Internet下载的项目),则删除清单文件并删除.rc文件中对清单文件的引用。
我最近遇到了这个问题,最终导致了一个没有资源冲突的项目文件。在我的例子中,我将VS2008的QT qmake生成项目导入VS2010。使用VcprojFormatter和很多差异后,我发现了差异(对我而言)。我认为这是导入向导或VS 2010的核心中的一个错误。
http://www.codeproject.com/KB/macros/vcproj_formatter.aspx
我的资源文件名为win32_resources.rc您需要编辑与构建配置相对应的每个中间数据文件夹(发布,调试等)
在vcxproj文件中查找以下部分:
<ItemGroup>
<Resource Include="debugwin32_resources.res">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
</Resource>
<Resource Include="releasewin32_resources.res">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
</Resource>
</ItemGroup>
所有“资源”文本都应替换为“CustomBuildStep”:
<ItemGroup>
<CustomBuildStep Include="debugwin32_resources.res">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
</CustomBuildStep>
<CustomBuildStep Include="releasewin32_resources.res">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
</CustomBuildStep>
</ItemGroup>
VS2008文件中的问题是默认(?)设置不明确:
<File RelativePath="releasewin32_resources.res">
<FileConfiguration
Name="Debug|Win32"
ExcludedFromBuild="true"
>
<Tool Name="VCCustomBuildTool"/>
</FileConfiguration>
</File>
缺少“工具名称”字段。
如果您在编译时遇到此错误(通常是从Internet下载的项目),则删除清单文件并删除.rc文件中对清单文件的引用。
对于我遇到的情况,hB0的答案是100%正确的。
这对我非常有用,我希望其他人知道这一点,而不是假设hB0的答案应该被忽略,因为其他人有投票而hB0的票数为零。我必须在单独的答案中说出来,因为我系统不会让未注册的用户投票。我甚至注册了,以便能够对这个答案投票,但系统仍然不会让我投票,直到我是一个更成熟的用户。
这是一个延伸,但我在Visual Studio 2005下遇到了类似的问题。它可能会有所帮助,或完全偏离基础:
我正在使用具有自己的版本资源的静态库(.lib)进行链接 - 非常合理,它显示了库的版本。在某些电台上,我的应用会链接。在其他站点,我会得到相同的重复资源消息。
事实证明它与链接器优化设置有关:“使用库依赖关系输入”(UseLibraryDependencyInputs =),可能与“链接库依赖关系”结合使用。启用“使用库依赖项输入”时,链接器将被提供用于构建.lib的.obj和.res文件,而不是仅搜索.lib。
问题是您不希望.lib的.res文件作为链接器的输入文件。我的项目有自己的版本资源。如果引入.lib的资源,则现在有两个版本资源,因此出现错误。如果链接器只是搜索.lib,它没有理由引入.lib的资源,一切都很好。
我的项目配置没有强制设置“使用库依赖项输入”,它继承了它。在某些电台上,它继承了“否”,我可以链接。在某些站点,它继承了“是”,我们得到了错误。
如果Visual Studio 2010仍具有此设置,请尝试将其强制关闭。
我有这个问题,它通过确保从构建中排除任何包含的.rc文件来解决,除了#include其余的主.rc。
我有这个问题,它通过确保从构建中排除任何包含的.rc文件来解决,除了#include其余的主.rc。理查德海因为我工作。我正在编译VS2013。
我在Visual Studio C ++ 2010中遇到了类似的问题。我没有安装任何Service Pack或VS的更新,当我有两个尝试使用ICON的rc文件时出现了这个问题。所以我只是将一个文件的内容删除并将其切换到主文件中。因此,只有一个文件包含图标,第二个文件为空。像沙姆一样工作:-)。
以上是关于如何解决Visual Studio 2010 Ultimate中的CVT1100?的主要内容,如果未能解决你的问题,请参考以下文章
如何解决Visual Studio 2010 Ultimate中的CVT1100?
如何解决Visual Studio2010 编译时提示系统找不到指定文件问题
如何解决Visual Studio2010 编译时提示系统找不到指定文件问题