在 Visual Studio 2013 中,我试图在另一个静态库(比如“MyConn”)中使用静态库 (MySQL Connector/C),并在 DLL 项目中使用它 (MyConn)。静态库构建查找,但尝试构建 DLL 会产生如下链接器错误:
MyConn.lib(plugin_client.obj) : error LNK2038: mismatch detected for 'RuntimeLibrary': value 'MTd_StaticDebug' doesn't match value 'MDd_DynamicDebug' in doit.obj
LIBCMTD.lib(dbgheap.obj) : error LNK2005: __CrtCheckMemory already defined in msvcrtd.lib(MSVCR120D.dll)
在项目属性中,Configuration Properties --> C/C++ --> Code Generation --> Runtime Library
,所有三个项目对各自的构建类型都有相同的设置:
- 调试 -
多线程调试 DLL (/MDd)
- 发布 -
多线程 DLL (/MD)
还有哪些其他设置可以解决此问题?
最佳答案
您的 doit.obj
链接到与 MyConn.lib 不同的 MS 运行时库。检查您的项目设置,并确保两个项目的运行时库都设置为 Multithreaded Debug
或 Multithreaded
。
关于c++ - 尝试在 DLL 中使用静态库的 Visual Studio 链接器错误(LNK2038、LNK2005),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33764739/