小编bad*_*err的帖子

VC8到VC10 - LNK2005错误

我最近安装了Visual Studio 2010并使用CMake为我的项目生成解决方案文件.此过程以前在VS2005上运行良好.

我遇到的第一个问题是因为新的"移动构造函数",所以我不得不从我的代码中删除一些隐式转换 - 公平,现在可行.

我目前的情况如下:我正在编译DLL 1,它只依赖于某些系统库(Kernel32等)和CRT,以及链接到DLL 1的DLL 2,以及一些第三方库.

我得到的错误是:

DLL1.lib(DLL1.dll) : error LNK2005: "public: __thiscall std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >::~basic_string<char,struct std::char_traits<char>,class std::allocator<char> >(void)" (??1?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@XZ) already defined in objFromDLL2.obj
Run Code Online (Sandbox Code Playgroud)

这似乎正是这里描述的问题.

但是,此线程中没有任何内容可以解决我的问题.

  • 我已经确认DLL1和DLL2都是用/ MD代码生成标志编译的,
  • DLL2链接到squish,glew和devil - 我已经手动重新编译了所有这些以及它们依赖于 VC10的任何库,还有/ MD
  • 编辑根据这篇文章(类似于我的问题),我删除了从std :: containers派生的任何类的实例
  • 编辑我已经确认这不是第三方问题,因为我已使用同一组库成功编译了另一个项目,但是我仍然无法编译我的原始项目
  • 编辑 dllexport正在我的代码中的所有必需位置使用

我错过了什么?如果我需要提供更多信息,请告诉我,我会尽我所能编辑问题.

更新:已经有一段时间了,我仍然没有解决方案.我一直在用评论的回复来更新问题,我正在研究一个可行的不同代码库 - 我开始认为旧代码的向后兼容性终于开始枯竭,我应该只是继续.

更新:我发现了什么可能是一个非常不受欢迎的链接器标志,/ FORCE:MULTIPLE,它通过忽略除符号的第一个定义之外的所有内容将错误转换为警告.这样做必然会产生不良副作用.对此标志的测试突出显示了LNK2001:未解析的std :: string :: npos,它隐藏在所有先前的LNK2005错误中.折磨永无止境.

c++ linker visual-studio-2010

11
推荐指数
1
解决办法
2669
查看次数

用于在 jenkins 中定期启用 Build 的 DSL

我知道如何使用轮询来做到这一点,

triggers
{
  scm("H/15 * * * *")
}
Run Code Online (Sandbox Code Playgroud)

如何指定触发器定期构建? 在此处输入图片说明

dsl jenkins-job-dsl

1
推荐指数
1
解决办法
2998
查看次数

标签 统计

c++ ×1

dsl ×1

jenkins-job-dsl ×1

linker ×1

visual-studio-2010 ×1