2011-03-30 64 views
2

HI,MSVC - C++ - 发布版本失败 - 连接错误

如果我试图建立和释放模式链接我的应用程序,我得到了链接错误:

Error 72 error LNK2001: unresolved external symbol "public: __thiscall MyModels::MT6::MT6(double)" ([email protected]@@[email protected]@Z) C:\Martin\Programing\WoknaTest\WoknaTest\DXForm.obj WoknaTest

在调试模式下一切正常罚款....可能有什么错误?

感谢

+0

好吧..我发现的问题..我的* .h文件之一是incorectly设置为C/C++ * .cpp文件:/即使延长是我没有使用任何特殊的图书馆的* .h – Perry 2011-03-30 15:46:28

回答

3

我会检查所有的.lib包括和DLL包含在发布和调试模式下的项目设置。

对此的解决方案可能在项目设置中用于链接某处(包括.lib .dll或路径包含),但我无法真正告诉你信息中的确切位置。你提供。

5

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

+0

... – Perry 2011-03-30 11:28:10

+0

@Perry:MyModels :: MT6 :: MT6在哪里定义呢?它不在#ifdef DEBUG或某些类似下,是吗? – 2011-03-30 11:30:49

+1

没有..它只有#ifndef VOXEL_LOADER_H #define VOXEL_LOADER_H ... <代码 - 没有使用外部库> #endif – Perry 2011-03-30 11:35:47

2

最有可能的版本(假设您没有手动编辑您的项目设置)是由于您的代码引用了一些库,并且您没有发布版本的库。通常,链接器引用具有“d”后缀的库用于调试,并且没有它用于发布。

例如:您的解决方案中有一个VectorMath项目。该项目默认在调试配置中创建一个库vectormathd.lib,并在发布中创建vectormath.lib。如果你的依赖关系被搞砸了,而你从来没有构建过vectormath的发布版本,那么你将在发布版本中构建你的主项目,并且它将会寻找你不会拥有的vectormath.lib - 因此这是无法解析的外部符号。解决方案是确保所有项目都是在发布模式下构建的,或者修复依赖关系以让VS为您做到这一点。