LNK2038:检测到'RuntimeLibrary'不匹配:值'MT_StaticRelease'与file.obj中的值'MD_DynamicRelease'不匹配

Ahm*_*san 47 c++ matlab cuda visual-c++

我正在整合Matlab,CCuda在一个项目中.我使用Matlab mix将c语言编写的matlab mx函数与cuda运行时库连接起来,出现了关于静态发布中的冲突和c文件与库之间的动态发布的链接错误.谁能解决这个问题?

error LNK2038: mismatch detected for 'RuntimeLibrary': value 'MT_StaticRelease' doesn't match value 'MD_DynamicRelease' in file.obj. 
Run Code Online (Sandbox Code Playgroud)

tux*_*ux3 51

库和您的项目必须使用与C运行时库相同的设置进行链接.

在您的情况下,一个与CRT DLL(/ MD)链接,另一个与静态链接(/ MT).

你只需要确保两者匹配,这个错误就会消失.

  • @xaxxon右键单击项目 - >属性 - > C/C++ - >代码生成.链接选项列在那里. (5认同)
  • 你如何在用户界面中挑战它? (3认同)
  • 要求所有源文件都使用预处理器符号_DEBUG进行编译的"原因"是什么?为了性能目的,是什么禁止编译要为发布而编译的编译单元? (2认同)

Rah*_*hav 41

当您将项目静态链接到库(通常是扩展名为.lib的文件)但Visual Studio项目中的链接器设置被设置为动态链接(意味着链接将在运行时发生,通常使用.)时,可能会发生此错误. DLL文件).

要定义您需要项目使用静态链接启动Visual Studio.在Solution Explorer窗格中,右键单击项目名称,然后选择Properties.展开属性,如下图所示:C/C++ - >代码生成 - >运行时库,Multi-threaded (/MT)从下拉菜单中选择选项. 在此输入图像描述

  • 如果我通过控制台 (CMD) 运行代码,如何执行此操作? (4认同)
  • 这并没有修复严重性代码描述项目文件行抑制状态错误 LNK2038 不匹配检测到“RuntimeLibrary”的错误:值“MD_DynamicRelease”与 Calibration.obj OpenARK-SDK 中的值“MT_StaticRelease”不匹配 C:\OpenARK\OpenARK -SDK\libboost_system-vc140-mt-1_61.lib(error_code.obj) 1 (3认同)

小智 6

用于分享目的。

我正在使用 2017 VS 版本,该版本成功打开并运行旧的 2008 解决方案。现在,如果出于某种原因,即使您将所有库和主项目更改为具有相同的运行时库参数(在属性下,请参阅上面的海报)但您仍然收到相同的错误消息,请尝试打开每个单独的 .vcxproj 文件. 在“RuntimeLibrary”下搜索并使它们在所有 vcxproj 文件中的值相同。出于某种原因,这些 vcxproj 文件永远不会更新为我在属性设置中声明的相同值,我必须在 vcxproj 中手动更改它们。

或者,如果您愿意,也可以打开 vcproj 文件并将它们的“RuntimeLibrary”更改为相同的。这里的值是数字。


use*_*030 5

以下是修复的正确步骤

Error   69  error LNK2038: mismatch detected for 'RuntimeLibrary': value 'MT_StaticRelease' doesn't match value 'MD_DynamicRelease'
Run Code Online (Sandbox Code Playgroud)

这意味着运行时库是静态的,又名MT_StaticRelease ),这与您项目值动态库又名dllMD_DynamicRelease)不同

  • 右键单击解决方案
  • 单击属性
  • 配置属性->常规

将配置类型从动态库 (dll) 更改为 静态(lib)

在此输入图像描述

如果您遇到相反的情况并且上述步骤无法解决问题,请使用此选项

C/C++ --> 代码生成 --> 运行时库选择多线程 在此输入图像描述

  • 运行时库设置完全独立于是否构建 .lib 还是 .dll。不要更改库类型来尝试防止运行时库不匹配。 (5认同)