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

Static library (/MT) linking conflicts with project /MTd option

我的项目链接了很多静态库。所有这些以前都链接良好,但现在我添加了 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。为什么其他静态库链接ok?编译选项相同(我自己编译的库),所有库的 MT 选项,但只有 mysql c api 不能与我的项目 MTd 选项链接。 为什么?
提前致谢!

该错误表明项目中使用的 CRT 库(/MTd 多线程静态调试)与静态 linked 库(/MT 多线程静态调试)使用的 CRT 库之间存在冲突发布)。这是一个错误条件,因为一个模块(EXE 或 DLL)只能 have/use 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(调试配置)和 link 重建静态库到该调试库, 相反。

不使用 MSVC 运行时的库不受影响,可以毫无顾虑地用于调试或发布版本。