Ski*_*ggz 2 c++ dll qt linker-errors visual-studio
我在我的项目中一直面临这个错误。该项目有许多子项目,子项目作为静态库部署。
我之前遇到过这个错误,但是为所有静态库和 .exe 配置相同的运行时库将帮助我摆脱它。大多数错误都消失了,但即使所有项目的配置都相同,静态库之一也会引发此错误。
错误说
Error LNK2038 mismatch detected for 'RuntimeLibrary': value 'MD_DynamicRelease' doesn't match value 'MTd_StaticDebug' in application.obj flRenderServer D:\Projects\FLProject\RenderBox\singlegame_renderbox\Production\FantasticLeague\_Code\FLeague\flRenderServer\miniEngine.lib(miniEngine.obj) 1
Run Code Online (Sandbox Code Playgroud)
这很相似
Severity Code Description Project File Line Suppression State
Error LNK2038 mismatch detected for '_ITERATOR_DEBUG_LEVEL': value '0' doesn't match value '2' in application.obj flRenderServer D:\Projects\FLProject\RenderBox\singlegame_renderbox\Production\FantasticLeague\_Code\FLeague\flRenderServer\miniEngine.lib(miniEngine.obj) 1
Run Code Online (Sandbox Code Playgroud)
除此之外,没有其他库给出任何错误。任何帮助将不胜感激,谢谢:)
如果您的静态库和可执行文件本身使用不同的配置进行编译,通常会发生这种情况。在您的情况下miniEngine,似乎是在调试配置中编译的,而可执行文件是在发布配置中编译的。有时,迭代器调试级别是由#define _ITERATOR_DEBUG_LEVEL ...项目属性中的预处理器定义直接设置的。的值RuntimeLibrary受编译器标志/MD[d]和的影响/MT[d]。
详细信息:LINK2038如果目标文件包含链接器指令/FAILIFMISMATCH:<Name>=<Value>并且链接的目标文件之间<Value>存在某些不匹配,则链接器会发出错误。<Name>您可以列出目标文件的链接器指令dumpbin /DIRECTIVES <object-file>。这些指令通常由某些头文件中的一行设置#pragma detect_mismatch("<Name>", "<Value>")。该值取决于构建目标文件所使用的特定配置。这些指令试图确保您不会将不兼容的目标文件链接在一起。例如,在调试模式下编译的目标文件可能期望某些标准类(如迭代器)有不同的类布局。
可能的原因:
#define _ITERATOR_DEBUG_LEVEL,但不在可执行文件的任何源文件中手动定义,反之亦然请仔细检查链接的静态库和可执行文件的路径和配置。
| 归档时间: |
|
| 查看次数: |
5280 次 |
| 最近记录: |