QT之error: LNK2038: 检测到“RuntimeLibrary”的不匹配项

打印 上一主题 下一主题

主题 1012|帖子 1012|积分 3036

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
静态编译了个QT5.15.16的库,结果按照老方法无法正常利用,报错
   Qt5Widgets.lib(qtabwidget.obj):-1: error: LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MT_StaticRelease”不匹配值“MD_DynamicRelease”(mocs_compilation.cpp.obj 中)
  

查阅了挺多资料,尝试许久,发现办理方式如下:
在项目的cmakelist里增长如下内容

  1. # 判断是否使用 MSVC 编译器
  2. if(MSVC)
  3.     # 设置策略CMP0091为NEW,新策略
  4.     if (POLICY CMP0091)
  5.       cmake_policy(SET CMP0091 NEW)
  6.     endif (POLICY CMP0091)
  7.     # 设置MT/MTd
  8.     set_property(TARGET Qt_static_third PROPERTY MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>")
  9. endif()
复制代码
 肯定要用上面这种。
下面这种没用。
  1. # 判断是否使用 MSVC 编译器
  2. if(MSVC)
  3.     # 获取当前的构建类型
  4.     if(CMAKE_BUILD_TYPE STREQUAL "Debug")
  5.         # 调试模式下添加 /MTd 标志
  6.         set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /MTd")
  7.     elseif(CMAKE_BUILD_TYPE STREQUAL "Release")
  8.         # 发布模式下添加 /MT 标志
  9.         set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /MT")
  10.     endif()
  11. endif()
复制代码


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

兜兜零元

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表