VS 2019 VC++项目出现 LNK1104 无法打开文件“libcmtd.lib“ 的解决方法

本文讲述了开发者在VS2019环境下遇到的libcmtd.lib链接错误,通过设置附加库目录和添加依赖项的步骤,详细介绍了如何修复这个问题,适用于Windows 10和VC++开发环境。

VS 2019编译VC++动态库项目,出现了一个链接器问题:

LNK1104 无法打开文件"libcmtd.lib"

  • 操作系统版本:Windows 10 18363.592
  • VS版本:VS 2019 16.11.5

1、在项目上点击右键,选择【属性】→【链接器】→【常规】,找到【附加库目录】,然后在VS的安装目录中找到libcmtd.lib所在目录,有两个目录,一个是x86,一个是x64,选择合适操作系统位数的目录
【D:\Software\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\lib\x64】
fix-001

2、添加目录后,找到【输入】,选择【附加依赖项】,将该库文件添加进去。

fix-002

为什么debug编译报错:已启动重新生成… 1>------ 已启动全部重新生成: 项目: UsrAcqDrv, 配置: Debug x64 ------ 1>stdafx.cpp 1>UsrAcqDrv.cpp 1>D:\code\SherLock_UsrAcqDrv\Sherlock7\include\IKapBoard.h(513,1): warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失 1>D:\code\SherLock_UsrAcqDrv\Sherlock7\include\IKapBoard.h(1375,1): warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失 1>D:\code\SherLock_UsrAcqDrv\Sherlock7\include\IKapC.h(1,1): warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失 1>D:\code\SherLock_UsrAcqDrv\Sherlock7\include\IKapCType.h(1,1): warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失 1>D:\code\SherLock_UsrAcqDrv\Sherlock7\include\IKapC.h(1312,1): warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失 1>D:\code\SherLock_UsrAcqDrv\Sherlock7\UsrAcqDrv\ITKDeviceManager.h(229,23): warning C4101: “tIKei”: 未引用的局部变量 1>D:\code\SherLock_UsrAcqDrv\Sherlock7\UsrAcqDrv\ITKDeviceManager.h(794,31): warning C4244: “=”: 从“int64_t”转换到“int”,可能丢失数据 1>D:\code\SherLock_UsrAcqDrv\Sherlock7\UsrAcqDrv\ITKDeviceManager.h(798,32): warning C4244: “=”: 从“int64_t”转换到“int”,可能丢失数据 1>D:\code\SherLock_UsrAcqDrv\Sherlock7\UsrAcqDrv\UsrAcqDrv.cpp(143,23): warning C4018: “<”: 有符号/无符号不匹配 1>D:\code\SherLock_UsrAcqDrv\Sherlock7\UsrAcqDrv\UsrAcqDrv.cpp(193,37): warning C4267: “=”: 从“size_t”转换到“int”,可能丢失数据 1>D:\code\SherLock_UsrAcqDrv\Sherlock7\UsrAcqDrv\UsrAcqDrv.cpp(356,63): warning C4267: “=”: 从“size_t”转换到“int”,可能丢失数据 1>UsrAcqDrvDll.cpp 1>正在生成代码... 1> 正在创建库 x64\Debug_v80\UsrAcqDrv.lib 和对象 x64\Debug_v80\UsrAcqDrv.exp 1>libcpmtd.lib(xwcsxfrm.obj) : error LNK2001: 无法解析的外部符号 _free_dbg 1>libcpmtd.lib(StlCompareStringA.obj) : error LNK2001: 无法解析的外部符号 _free_dbg 1>libcpmtd.lib(locale.obj) : error LNK2001: 无法解析的外部符号 _free_dbg 1>libcpmtd.lib(StlLCMapStringA.obj) : error LNK2001: 无法解析的外部符号 _free_dbg 1>libcpmtd.lib(wlocale.obj) : error LNK2001: 无法解析的外部符号 _free_dbg 1>libcpmtd.lib(xlocale.obj) : error LNK2001: 无法解析的外部符号 _free_dbg 1>UsrAcqDrv.obj : error LNK2001: 无法解析的外部符号 _free_dbg 1>libcpmtd.lib(mutex.obj) : error LNK2001: 无法解析的外部符号 _free_dbg 1>libcpmtd.lib(cond.obj) : error LNK2001: 无法解析的外部符号 _free_dbg 1>libcpmtd.lib(locale0.obj) : error LNK2001: 无法解析的外部符号 _free_dbg 1>libcpmtd.lib(wlocale.obj) : error LNK2001: 无法解析的外部符号 _malloc_dbg 1>libcpmtd.lib(xlocale.obj) : error LNK2001: 无法解析的外部符号 _malloc_dbg 1>libcpmtd.lib(xwcsxfrm.obj) : error LNK2001: 无法解析的外部符号 _malloc_dbg 1>libcpmtd.lib(StlCompareStringA.obj) : error LNK2001: 无法解析的外部符号 _malloc_dbg 1>UsrAcqDrv.obj : error LNK2001: 无法解析的外部符号 _malloc_dbg 1>libcpmtd.lib(locale0.obj) : error LNK2001: 无法解析的外部符号 _malloc_dbg 1>libcpmtd.lib(locale.obj) : error LNK2001: 无法解析的外部符号 _malloc_dbg 1>libcpmtd.lib(StlLCMapStringA.obj) : error LNK2001: 无法解析的外部符号 _malloc_dbg 1>libcpmtd.lib(wlocale.obj) : error LNK2001: 无法解析的外部符号 _CrtDbgReport 1>libcpmtd.lib(xlocale.obj) : error LNK2001: 无法解析的外部符号 _CrtDbgReport 1>UsrAcqDrv.obj : error LNK2001: 无法解析的外部符号 _CrtDbgReport 1>libcpmtd.lib(xtime.obj) : error LNK2001: 无法解析的外部符号 _CrtDbgReport 1>libcpmtd.lib(thread0.obj) : error LNK2001: 无法解析的外部符号 _CrtDbgReport 1>libcpmtd.lib(locale.obj) : error LNK2001: 无法解析的外部符号 _CrtDbgReport 1>UsrAcqDrv.obj : error LNK2019: 无法解析的外部符号 "__declspec(dllimport) public: bool __cdecl std::less<int>::operator()(int const &,int const &)const " (__imp_??R?$less@H@std@@QEBA_NAEBH0@Z),函数 "bool __cdecl std::_Debug_lt_pred<struct std::less<int> const &,int const &,int const &,0>(struct std::less<int> const &,int const &,int const &)" (??$_Debug_lt_pred@AEBU?$less@H@std@@AEBHAEBH$0A@@std@@YA_NAEBU?$less@H@0@AEBH1@Z) 中引用了该符号 1>libcpmtd.lib(wlocale.obj) : error LNK2001: 无法解析的外部符号 _calloc_dbg 1>libcpmtd.lib(xlocale.obj) : error LNK2001: 无法解析的外部符号 _calloc_dbg 1>libcpmtd.lib(mutex.obj) : error LNK2001: 无法解析的外部符号 _calloc_dbg 1>libcpmtd.lib(cond.obj) : error LNK2001: 无法解析的外部符号 _calloc_dbg 1>libcpmtd.lib(_tolower.obj) : error LNK2001: 无法解析的外部符号 _calloc_dbg 1>libcpmtd.lib(locale.obj) : error LNK2001: 无法解析的外部符号 _calloc_dbg 1>libcpmtd.lib(_tolower.obj) : error LNK2019: 无法解析的外部符号 _wcsdup_dbg,函数 _Getctype 中引用了该符号 1>libcpmtd.lib(xstrcoll.obj) : error LNK2001: 无法解析的外部符号 _wcsdup_dbg 1>libcpmtd.lib(locale.obj) : error LNK2019: 无法解析的外部符号 _realloc_dbg,函数 "private: static void __cdecl std::locale::_Locimp::_Locimp_Addfac(class std::locale::_Locimp *,class std::locale::facet *,unsigned __int64)" (?_Locimp_Addfac@_Locimp@locale@std@@CAXPEAV123@PEAVfacet@23@_K@Z) 中引用了该符号 1>libcpmtd.lib(StlLCMapStringA.obj) : error LNK2019: 无法解析的外部符号 _CrtDbgReportW,函数 _freea_crt 中引用了该符号 1>libcpmtd.lib(xmbtowc.obj) : error LNK2001: 无法解析的外部符号 _CrtDbgReportW 1>libcpmtd.lib(StlCompareStringA.obj) : error LNK2001: 无法解析的外部符号 _CrtDbgReportW 1>x64\Debug_v80\UsrAcqDrv.dll : fatal error LNK1120: 8 个无法解析的外部命令 1>已完成生成项目“UsrAcqDrv.vcxproj”的操作 - 失败。 ========== 全部重新生成: 成功 0 个,失败 1 个,跳过 0 个 ========== release编译就没问题
11-14
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

极客范儿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值