libcpmtd.lib的用途是什么?

问题描述 投票:0回答:1

突然,我的程序出现如下链接错误:

libcpmtd.lib(xlock.obj):错误LNK2038:'RuntimeLibrary'不匹配。值'MTd_StaticDebug'与[project x]的值不同,即:'MDd_DynamicDebug'

由于此错误突然在多台计算机上出现,所以我相信这不是由于意外修改任何文件引起的。

版本:Visual Studio 2013

问题1:

您能否提供有关此错误原因以及如何解决的任何提示?


我做了什么:我从项目设置的导入库列表中删除了libcpmtd.lib,然后构建错误消失了,一切都OK。

但是,我不确定libcpmtd.lib是干什么用的?Google告诉我里面有CRT,但是具体内容是什么?

也许此库已添加,但从某些时候开始不相关。

问题2:

在libcpmtd.lib中是什么?我想弄清楚删除lib后可能丢失了什么。

c++ build lib
1个回答
0
投票

这些是C ++标准运行时库。使用Visual C ++,您有2个选项,可以为它链接到的库提供4种排列。

Debug v.s.发布

正如它所暗示的,您是否想要具有附加错误检查的C ++运行时库?

静态与动态

如果恰好仅编译一个简单的exe,则静态链接到库应该没问题。但是,如果您有一个包含多个DLL的大型项目,则动态加载CRT是有意义的(因此它可以在DLL之间共享,而不是复制到每个DLL中)

所以您拥有的是配置错误的构建。您需要检查项目中的每个库,DLL和exe的C / C ++运行时库设置(您可以在项目设置中的C / C ++->代码生成中找到它)] >。

[您需要确保每个链接都链接到相同的运行时库(即,所有调试设置都为Debug DLL,所有发布设置均为Release DLL)。

如果不能解决问题,那么还有两个可能的原因:

  1. 您已经开始链接到第三方库,这就是CRT不匹配的原因。出于这个原因,大多数库都提供了调试和发布版本,因此希望您只需要更新要链接的库。
  2. [您无意中将Debug库拉入发行版(或发行库,插入调试exe)。为此,您将需要检查所有其他库目录,和/或检查以确保所有debug&release输出目录都是正确的(即,您不会无意间将调试库编译到release build文件夹中)
© www.soinside.com 2019 - 2024. All rights reserved.