QT之error: LNK2038: 检测到“RuntimeLibrary”的不匹配项
静态编译了个QT5.15.16的库,结果按照老方法无法正常使用,报错
Qt5Widgets.lib(qtabwidget.obj):-1: error: LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MT_StaticRelease”不匹配值“MD_DynamicRelease”(mocs_compilation.cpp.obj 中)
查阅了挺多资料,尝试许久,发现解决方式如下:
在项目的cmakelist里增加如下内容
# 判断是否使用 MSVC 编译器
if(MSVC)
# 设置策略CMP0091为NEW,新策略
if (POLICY CMP0091)
cmake_policy(SET CMP0091 NEW)
endif (POLICY CMP0091)
# 设置MT/MTd
set_property(TARGET Qt_static_third PROPERTY MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>")
endif()
一定要用上面这种。
下面这种没用。
# 判断是否使用 MSVC 编译器
if(MSVC)
# 获取当前的构建类型
if(CMAKE_BUILD_TYPE STREQUAL "Debug")
# 调试模式下添加 /MTd 标志
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /MTd")
elseif(CMAKE_BUILD_TYPE STREQUAL "Release")
# 发布模式下添加 /MT 标志
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /MT")
endif()
endif()
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.dtcms.com/a/15651.html
如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!