c++ - 如何忽略 LNK2005 和 LNK1169?

标签 c++ visual-studio-2010 linker-errors lnk2005

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

我让它在 Release模式下编译得很好,但出于某种原因我没能在调试时让它在没有 LNK 错误的情况下编译。

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

谢谢!

//编辑:这里是特定问题的一些错误输出。但是我已经尝试以不同的方式解决这个问题,每个解决方案都会给我不同的链接器问题。因此我正在寻找忽略 LNK2005 的通用解决方案

错误 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)

错误 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(类型信息.obj) ...\msvcprtd.lib(MSVCP100D.dll)

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

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

...

错误 37 错误 LNK1169:找到一个或多个多重定义的符号

最佳答案

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

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

关于c++ - 如何忽略 LNK2005 和 LNK1169?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4085050/

相关文章:

c++ - 在 STL 容器上使用 Emplace_back 而不是 push_back?

c++ - boost property_tree 在循环中添加节点

c++ - 在 C++ vector 中使用取消引用运算符

visual-studio-2010 - 使用 git-svn 的行尾与来自两个 VCS 的提交不一致

ios - 在 iOS 6 而不是 iOS 7 上运行时出错

c++ - 将 vcpkg 与 Visual Studio 2022 一起使用会产生伪造的未解析外部符号链接(symbolic link)器错误

c++ - 片段着色器究竟如何用于纹理?

visual-studio-2010 - Resharper(或Visual Studio)自动完成

c# - 我应该为 VS 2010 创建什么样的插件/扩展?

bash - 错误: could not compile `migrations_macros`