c++ - 尝试在 DLL 中使用静态库的 Visual Studio 链接器错误(LNK2038、LNK2005)

标签 c++ visual-studio dll static-libraries

在 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 DebugMultithreaded

关于c++ - 尝试在 DLL 中使用静态库的 Visual Studio 链接器错误(LNK2038、LNK2005),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33764739/

相关文章:

c# - 在 C# 中,设置具有依赖项(例如类库或单独文件)的项目时的最佳做法是什么

java - 基于线性时间搜索字符串对字符串进行排序

c++ - C++ 编译器可以优化对 at() 的调用吗?

c# - c# 可以像 VB.NET 一样自动更正语法大小写吗?

c# - Visual Studio 缺少警告

visual-studio - 如何清除 VS2008 中错误列表的警告部分?

date - 如何获取dll文件的编译日期?

c# - 使用 gacutil 安装 .dll

c++ - 为什么在sizeof()中添加两个变量类型会返回最大的变量大小值而不是它们的总和?

c++类型别名在测试特化时不起作用