首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何忽略LNK2005和LNK1169?

如何忽略LNK2005和LNK1169?
EN

Stack Overflow用户
提问于 2010-11-03 15:50:15
回答 2查看 10K关注 0票数 5

所以我有一个使用外部库的Visual Studio2010项目,为了在没有LNK2005的情况下编译它,我不得不在链接器设置中改变库的顺序。

我让它在发布模式下编译得很好,但无论出于什么原因,我都没能让它在调试时没有LNK错误地编译。

难道没有办法忽略LNK2005,告诉链接器简单地使用他首先遇到的任何东西吗?

谢谢!

//edit:以下是特定问题的一些错误输出。然而,我已经尝试过用不同的方法来解决这个问题,每个解决方案都会给我带来不同的链接器问题。因此,我正在寻找忽略LNK2005的通用解决方案

Error 7 error LNK2005: "private: __thiscall type_info::type_info(class type_info const &)" (??0type_info@@AAE@ABV0@@Z) already defined in Libcmtd.lib(typinfo.obj) ...\msvcprtd.lib(MSVCP100D.dll)

Error 8 error LNK2005: "private: class type_info & __thiscall type_info::operator=(class type_info const &)" (??4type_info@@AAEAAV0@ABV0@@Z) already defined in Libcmtd.lib(typinfo.obj) ...\msvcprtd.lib(MSVCP100D.dll)

Error 9 error LNK2005: _exit already defined in Libcmtd.lib(crt0dat.obj) ...\msvcprtd.lib(MSVCP100D.dll)

Error 10 error LNK2005: __invalid_parameter already defined in Libcmtd.lib(invarg.obj) ...\msvcprtd.lib(MSVCP100D.dll)

..。

Error 37 error LNK1169: one or more multiply defined symbols found

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-11-03 16:48:56

您可以尝试链接器选项/FORCE (在项目属性的链接器常规选项卡中强制文件输出)。这将强制链接器创建exe/dll,即使发生此类错误也是如此。但这留给你去看看这个exe是否工作,或者甚至是正确的。毕竟,我不会推荐这种策略。

链接器错误有时很难解决,但通常只有在迁移或设置项目后才能解决。这可能需要相当长的一段时间--有时我花了一天多的时间,但这应该是正确的。

票数 11
EN

Stack Overflow用户

发布于 2010-11-03 16:10:22

你绝对不能忽略链接器错误,永远不要!一个链接器告诉你,它对一个在多个地方定义的符号感到困惑--它应该从哪里获取定义?你真的希望它是武断的吗?当您更改代码时,链接器随机决定采用另一个定义,这可能会突然破坏您的代码,那该怎么办呢?

与其对抗工具,不如改正你的代码,这样它就可以编译和链接,而不会出错。This MSDN article有一些关于修复它的信息,以及更多信息的链接。

票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4085050

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档