从VS2013迁移Qt5.10.1至VS2015遇LNK2001链接错误求助
解决VS2013迁移到VS2015(Qt5.10.1)时的LNK2001链接错误
你遇到的这些链接错误全是标准C/C运行时库(CRT)或C异常处理相关的符号未找到,本质是项目和Qt库、VS2015环境的配置不匹配导致的。下面给你几个针对性的解决步骤:
1. 确认Qt版本是针对VS2015编译的
Qt5.10.1确实支持VS2015,但你必须使用msvc2015/msvc2015_64版本的Qt安装包,而不是原来VS2013用的msvc2013版本。可以通过VS的Qt VS Tools菜单里的Qt Options检查,确保当前项目关联的Qt版本路径对应的是msvc2015的目录。
2. 统一项目的CRT运行库设置
右键项目 → 属性 → 配置属性 → C/C++ → 代码生成 → 运行库,确保:
- 你的项目和所有依赖的Qt库使用相同的运行库选项,比如都选
多线程DLL (/MD)(Release模式)或多线程调试DLL (/MDd)(Debug模式) - 绝对不要混合使用
/MT和/MD,Qt预编译库默认是用/MD编译的,混用必然会出现链接错误
3. 确保项目升级完全干净
VS的项目升级工具有时候会残留旧配置,试试这些操作:
- 删除项目根目录下的
.vcxproj.user文件,然后重新加载项目 - 检查项目属性 → 常规 → 平台工具集,确认是
Visual Studio 2015 (v140),而不是旧的v120 - 右键解决方案 → 清理,然后手动删除输出目录(比如Release/Debug文件夹),再重新生成整个解决方案
4. 检查UCRT相关配置
VS2015引入了通用CRT(UCRT),如果系统没装对应的运行时组件,或者项目配置不对也会出问题:
- 项目属性 → 配置属性 → 常规 → Windows SDK版本,选择VS2015自带的SDK版本(比如
10.0.10240.0) - 如果还是不行,可以手动在链接器的附加依赖项里添加
ucrt.lib、vcruntime.lib、msvcrt.lib这几个库
5. 验证Qt插件配置
如果你用的是VS的Qt插件,确保:
- 插件已经正确识别VS2015环境
- 当前项目的Qt版本关联正确,没有误选成VS2013的版本
附上你遇到的错误信息:
error LNK2001: unresolved external symbol __CxxFrameHandler3 error LNK2001: unresolved external symbol strcmp error LNK2001: unresolved external symbol __imp__invalid_parameter_noinfo_noreturn error LNK2001: unresolved external symbol memcpy error LNK2001: unresolved external symbol _CxxThrowException error LNK2001: unresolved external symbol __imp_calloc error LNK2001: unresolved external symbol fabs error LNK2001: unresolved external symbol __imp___stdio_common_vsprintf error LNK2001: unresolved external symbol __std_terminate error LNK2001: unresolved external symbol memset error LNK2001: unresolved external symbol strlen error LNK2001: unresolved external symbol __C_specific_handler error LNK2001: unresolved external symbol _initialize_narrow_environment
内容的提问来源于stack exchange,提问作者Ashif
相关产品推荐
相关产品推荐

