这不是VC++ resources in a static library的副本,因为它没有帮助:)
我的项目中有一个带有 TWO .rc
文件的静态库。当我使用Debug
配置构建项目时,我检索到以下错误(MSVS2008):
fatal error LNK1241: resource file res_yyy.res already specified
请注意,这只发生在Debug
和Release
库构建中,没有任何问题。项目配置中Resources
页面的命令行对于每个构建都是相同的:
/fo"...(Path here)/Debug/project_name.res"
/fo"...(Path here)/Release/project_name.res"
我无法理解什么是麻烦。 任何想法?
我不知道为什么会发生这种情况,但当我转向“使用链接时代码生成”选项时问题就消失了。
有人可以解释为什么会发生这种情况吗?我觉得MS编译器在这里做的事情很奇怪。
感谢。
答案 0 :(得分:4)
通过在设置中设置完整的一个.res
输出文件解决了这个问题。 我不确定为什么在Release
模式下它没问题。
答案 1 :(得分:4)
我遇到过这篇文章,因为我遇到了相同的链接器错误。
答案中指定的方法在我的系统上产生了一个链接器警告(xyz.res:警告LNK4042:指定了多次的对象;忽略了额外的内容)。
对我有用的是删除" 资源文件名"的条目和#34;文化"在“属性/资源”配置中。
答案 2 :(得分:1)
我在探索过程中调用了这个错误,以便从一个大型集合中获取所有构建为dll的一堆依赖项目,这些dll最初都被设置为构建为静态库。我无意中更改了项目引用中的一个项目设置以获取dll构建。重新检查我的更改是否适用于完整的静态库配置,这表明链接错误。因此,对于一个具有包含版本信息的资源文件的特定依赖项目,我将Project Reference Properties: Link Library Dependencies
标志设置为True
。将其更改为False
可修复错误。
顺便说一句,我只需要Dll版本的资源文件,因为我实际上需要将Link Library Dependencies设置为True来修复Dll版本中的链接器错误。所以我最后做的是通过将Yes
设置为Excluded From Build
来从静态库构建中排除资源文件。
答案 3 :(得分:0)
对我来说,我通过访问我的解决方案资源管理器并排除所有文件来解决问题,然后在项目中重新包含我正在使用的.h和.cpp文件