Windows库链接报错
问题回溯
今天拿到别人已经编译好的库,发现在链接的时候出现了报错
[9/9 12.7/sec] Linking CXX shared module bin\plugins\AsensingPlugin\AsensingPlugin.dll FAILED: bin/plugins/AsensingPlugin/AsensingPlugin.dll cmd.exe /C "cd . && "C:\Program Files\CMake\bin\cmake.exe" -E vs_link_dll --intdir=Plugins\AsensingPlugin\Plugin\CMakeFiles\AsensingPlugin.dir --rc=C:\PROGRA~2\WI3CF2~1\10\bin\100177~1.0\x64\rc.exe --mt=C:\PROGRA~2\WI3CF2~1\10\bin\100177~1.0\x64\mt.exe --manifests -- C:\PROGRA~2\MICROS~2\2017\COMMUN~1\VC\Tools\MSVC\1416~1.270\bin\Hostx64\x64\link.exe /nologo @CMakeFiles\AsensingPlugin.rsp /out:bin\plugins\AsensingPlugin\AsensingPlugin.dll /implib:lib\plugins\AsensingPlugin\AsensingPlugin.lib /pdb:bin\plugins\AsensingPlugin\AsensingPlugin.pdb /dll /version:0.0 /machine:x64 /INCREMENTAL:NO /INCREMENTAL:NO /LTCG && cd ." LINK: command "C:\PROGRA~2\MICROS~2\2017\COMMUN~1\VC\Tools\MSVC\1416~1.270\bin\Hostx64\x64\link.exe /nologo @CMakeFiles\AsensingPlugin.rsp /out:bin\plugins\AsensingPlugin\AsensingPlugin.dll /implib:lib\plugins\AsensingPlugin\AsensingPlugin.lib /pdb:bin\plugins\AsensingPlugin\AsensingPlugin.pdb /dll /version:0.0 /machine:x64 /INCREMENTAL:NO /INCREMENTAL:NO /LTCG /MANIFEST /MANIFESTFILE:bin\plugins\AsensingPlugin\AsensingPlugin.dll.manifest" failed (exit code 1120) with the following output: ag1.lib(filter.cpp.obj) : error LNK2038: 检测到“_ITERATOR_DEBUG_LEVEL”的不匹配项: 值“2”不匹配值“0”(AsensingPluginPlugin.cxx.obj 中) ag1.lib(filter.cpp.obj) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“MD_DynamicRelease”(AsensingPluginPlugin.cxx.obj 中) 正在创建库 lib\plugins\AsensingPlugin\AsensingPlugin.lib 和对象 lib\plugins\AsensingPlugin\AsensingPlugin.exp MSVCRT.lib(initializers.obj) : warning LNK4098: 默认库“msvcrtd.lib”与其他库的使用冲突;请使用 /NODEFAULTLIB:library ag1.lib(filter.cpp.obj) : error LNK2001: 无法解析的外部符号 __imp__invalid_parameter ag1.lib(filter.cpp.obj) : error LNK2001: 无法解析的外部符号 __imp__CrtDbgReport bin\plugins\AsensingPlugin\AsensingPlugin.dll : fatal error LNK1120: 2 个无法解析的外部命令 ninja: build stopped: subcommand failed. 15:07:29: 进程"C:\Program Files\CMake\bin\cmake.exe"退出,退出代码 1 。
划重点
ag1.lib(filter.cpp.obj) : error LNK2038: 检测到“_ITERATOR_DEBUG_LEVEL”的不匹配项: 值“2”不匹配值“0”(AsensingPluginPlugin.cxx.obj 中) ag1.lib(filter.cpp.obj) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“MD_DynamicRelease”(AsensingPluginPlugin.cxx.obj 中)
问题分析
库与库之间的变量不匹配:_ITERATOR_DEBUG_LEVEL和RuntimeLibrary,这个大概率是采用了不同的build版本编译所致,重新编译版本一致的库就得了
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)