gpt4 book ai didi

c++ - 静态库 (/MT) 链接与项目/MTd 选项冲突

转载 作者:行者123 更新时间:2023-12-03 07:03:39 27 4
gpt4 key购买 nike

我的项目链接了很多静态库。所有这些以前都链接得很好,但是现在我添加了 mysql c api 库,现在我得到了这样的错误:

mysqlclient.lib(client_authentication.obj) : error LNK2038: mismatch detected for "_ITERATOR_DEBUG_LEVEL": value "0" doesn't match value "2" in mysql_database_connection.obj
mysqlclient.lib(client_authentication.obj) : error LNK2038: mismatch detected for "RuntimeLibrary": value "MT_StaticRelease" doesn't match value "MTd_StaticDebug" in mysql_database_connection.obj


但只有当我使用 MSVC 运行时库的 MTd 选项构建项目时(我使用此运行时库选项进行开发)。其他静态库链接很好。我可以通过将 MTd 更改为 MT 来修复错误,但我想使用 MTd。为什么其他静态库链接正常?编译选项相同(我自己编译的库),所有库的 MT 选项,但只有 mysql c api 无法与我的项目 MTd 选项链接。
为什么?
提前致谢!

最佳答案

该错误表明项目中使用的 CRT 库(/MTd 多线程静态调试)与静态链接库使用的 CRT 库(/MT 多线程静态发布)之间存在冲突。这是一种错误情况,因为一个模块(EXE 或 DLL)只能拥有/使用一份 CRT 拷贝。
来自 /MD, /MT, /LD (Use Run-Time Library)笔记:

All modules passed to a given invocation of the linker must have been compiled with the same run-time library compiler option


要修复错误,请使用 /MT 构建项目(发布配置),或使用 /MTd 重建静态库(调试配置)并链接到该调试库,而不是。
不使用 MSVC 运行时的库不受影响,可以毫无顾虑地与调试或发布版本一起使用。

关于c++ - 静态库 (/MT) 链接与项目/MTd 选项冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64179145/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com