MSVC - C ++ - 发布版本失败 - 链接器错误

时间:2011-03-30 10:48:32

标签: c++ visual-c++

HI,

如果我尝试在发布模式下构建和链接我的应用,我收到了链接器错误:

  

错误72错误LNK2001:未解决   外部符号“public:__ thiscall   MyModels :: MT6 :: MT6(双)”   (?? 0MT6 @ MyModels @@ QAE @ N @ Z)C:\ Martin \ Programing \ WoknaTest \ WoknaTest \ DXForm.obj WoknaTest

在调试模式下一切正常......可能出现什么问题?

由于

4 个答案:

答案 0 :(得分:5)

从它在调试配置中成功构建的事实来看,我的第一个建议是检查提供给链接器的其他依赖项。此设置将Additional Dependencies设置为Project -> Properties -> Configuration Properties -> Linker -> Input。假设没有调试构建特定的库名称,请确保此设置与调试配置下的设置匹配。

答案 1 :(得分:3)

我在项目设置中检查所有.lib包含和dll都包含在Release和Debug模式中。

对此的解决方案可能是在某个地方链接的项目设置(.lib .dll或路径包含),但我无法确切地告诉您信息的确切位置。你提供了。

答案 2 :(得分:2)

最有可能的版本(假设您没有手动编辑项目设置)是您的代码引用了一些库,而您没有库的发行版本。通常,链接器引用带有“d”后缀的库以进行调试,而不使用它进行发布。

例如:您的解决方案中有一个项目VectorMath。默认情况下,该项目在debug config和vectormath.lib中构建库vectormathd.lib。如果您的依赖项被搞砸了,并且您从未构建了vectormath的发布版本,那么您将在发布版本中构建您的主项目,它将寻找您不会拥有的vectormath.lib - 因此未解析的外部符号。解决方案是确保所有项目都以发布模式构建,或者修复依赖项以让VS为您执行此操作。

答案 3 :(得分:0)

对我来说,这始终是这2种解决方案:

  1. 项目属性>配置属性>链接器>常规,链接库依赖关系=是
  2. 项目属性>配置属性>链接器>输入,其他依赖项,编辑。选中“从父级或项目默认值继承”