【CMake报错】“检测到_ITERATOR_DEBUG_LEVEL和RuntimeLibrary不匹配” 的解决方案

news2024/11/27 18:51:53

请添加图片描述
👉博__主👈:米码收割机
👉技__能👈:C++/Python语言
👉公众号👈:测试开发自动化
👉专__注👈:专注主流机器人、人工智能等相关领域的开发、测试技术


【CMake报错】“检测到_ITERATOR_DEBUG_LEVEL和RuntimeLibrary不匹配” 的解决方案(详细分析)


文章目录

  • 【CMake报错】“检测到_ITERATOR_DEBUG_LEVEL和RuntimeLibrary不匹配” 的解决方案(详细分析)
  • 1. CMake构建成功运行报错
  • 2. 原因分析
  • 3. 解决措施
  • 4. 总结
  • 还瞅啥?快点赞呐,臭宝😄!


1. CMake构建成功运行报错

自己编写CMakeLists.txt构建C++代码,运行代码时时,报了如下错误:

(1)错误 LNK2038 检测到“_ITERATOR_DEBUG_LEVEL”的不匹配项: 值“0”不匹配值“2” (XXXX.obj 中)

(2)错误 LNK2038 检测到“RuntimeLibrary”的不匹配项: 值“MD_DynamicRelease” 不匹配值“MDd_DynamicDebug”(XXXX.obj 中)


2. 原因分析

(1)这些错误是由于项目中使用的库文件与项目的编译选项不匹配引起的。
(2)错误LNK2038表示在链接过程中发现了不匹配项。
(3)需要调整链接选项以与库文件和编译选项匹配。
(4)两个不匹配项需要处理:_ITERATOR_DEBUG_LEVEL 和 RuntimeLibrary。


3. 解决措施

CMakeLists.txt中添加 target_compile_definitionstarget_compile_options 命令来设置调试和发布模式下的编译选项。
根据错误信息,措施如下:

  1. 将 _ITERATOR_DEBUG_LEVEL 设置为 2(debug模式)或 0(release模式)
  2. 将 RuntimeLibrary 设置为 /MDd(debug模式)或 /MD(release模式)。

CMakeLists.txt部分修改内容如下:

前提:我的项目名称是GtestAPI, 并且Debug和release时,我分别想要调用不同的lib文件。

# 根据构建类型选择不同的库文件路径
if(CMAKE_BUILD_TYPE MATCHES Debug)
    # debug模式
    target_link_directories(GtestAPI PRIVATE ${DEBUG_LIB_DIR})
    target_link_libraries(GtestAPI PRIVATE gmock_maind gtest_maind)
    
    # 【显式设置】debug模式下的编译定义(重点是这里)
    target_compile_definitions(GtestAPI PRIVATE _ITERATOR_DEBUG_LEVEL=2)
    # 【显式设置】debug模式下的编译选项(重点是这里)
    target_compile_options(GtestAPI PRIVATE /MDd)
else()
    # release模式
    target_link_directories(GtestAPI PRIVATE ${RELEASE_LIB_DIR})
    target_link_libraries(GtestAPI PRIVATE gmock_main gtest_main)
    
    # 【显式设置】release模式下的编译定义(重点是这里)
    target_compile_definitions(GtestAPI PRIVATE _ITERATOR_DEBUG_LEVEL=0)
    # 【显式设置】release模式下的编译选项(重点是这里)
    target_compile_options(GtestAPI PRIVATE /MD)

4. 总结

使用特定的库文件或需要更精确地控制编译过程时,显式设置 编译选项和定义是一种好的做法。


还瞅啥?快点赞呐,臭宝😄!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/598101.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

外观模式详解:轻松搞定复杂子系统

一、概述 外观模式(Facade Pattern)是一种结构型设计模式,它为多个子系统中的操作提供一个统一的高层接口,用于访问复杂子系统的功能。其核心思想是通过一个外观类将子系统的复杂操作进行封装,客户端只需与外观类进行…

微信朋友圈如何批量发圈

做营销最重要的任务是什么? 毋庸置疑,就是发布朋友圈。 为什么要发圈呢? 发朋友圈是一种推广产品和服务的营销手段。 在如今社交媒体普及的时代,人们大多数时间都在线上,而朋友圈作为微信中的社交场景之一&#xff…

小程序开发,帮助小个体实现品牌化

在这个互联网时代,小程序成为了各大平台的必备。微信作为一款国民级的应用,如今已经拥有近10亿的用户,而小程序作为微信新推出的一款产品,已经被大家熟知。除了微信平台之外,小程序也被很多商家所青睐。因为小程序能带…

C++中《stack和queue的使用》

本文主要讲解栈和队列的常见接口的使用 文章目录 一、栈的介绍和使用1.1 stack的介绍1.2 stack的使用 二、queue的介绍和使用2.1 queue的介绍2.2 queue的使用 一、栈的介绍和使用 1.1 stack的介绍 1️⃣stack是一种容器适配器,专门用在具有后进先出操作的上下文环…

CS5366电路原理图|CS5366demobord参考电路|单芯片PD集成4K60Hz拓展坞芯片设计

ASL CS5366是Type-C转HDMI 4K60HZPDUSB3.0单芯片集成芯片,芯片方案带DSC压缩功能且最高可支持支持RGB 4:4:4 。 CS5366参数特性: 支持最高分辨率/定时4k60Hz 支持DSC v1.2a,并与前一版本向后兼容 支持DSC解码器和直通模式 嵌入式32位RISC-V…

2023年天府杯全国大学生数学建模竞赛B题中国环境问题的治理解题全过程

2023年天府杯全国大学生数学建模竞赛 B题 中国环境问题的治理 原题再现: 问题背景:   随着经济的快速发展和人口的持续增长,中国的环境问题已经成为了一个急需解决的重要问题。这些环境问题不仅对人们的健康和生活质量产生了巨大的影响&a…

笔试强训7

作者:爱塔居 专栏:笔试强训 作者简介:大三学生,希望和大家一起进步 目录 day9 day10 day9 一. 单选 1.下面程序的输出是:() String x"fmn"; x.toUpperCase(); String yx.replace(f,F); yy"wxy"; System.out…

Redis的内存策略(未完成)

过期Key处理: 1)Redis之所以性能强大,最主要的原因就是基于内存来存储,然而单节点的Redis内存不宜设置的过大,否则会影响持久化或者是主从复制的性能,可以通过修改配置文件来设置redis的最大内存,通过maxmemory 1gb&am…

为什么数字化转型就应该选择低代码?一文详解

数字化转型在这几年被反复提及,我们听得耳朵都快起茧子了。数字化在当前经济社会发展中扮演着越来越重要的角色,可以帮助企业更好地理解消费者和市场需求,更好地应对市场竞争,同时也可以提高企业效率,促进经济发展。 究…

WICC · 出海嘉年华倒计时!精彩不容错过,「指南」一手掌握

6.2 广州 WICC出海嘉年华 精彩不容错过 指南一手掌握 -高端峰会 圆桌会议- 超 有 料 话题剧透 如何在巨头林立的热门赛道成功突围? 如何在迅猛发展的新兴市场深挖价值? 如何在复杂合规政策下实现应用增长? 如何利用好底层技术优化本地化…

pip安装库提示Read timed out更换下载源

在使用pip install xx安装库的时候提示 Read timed out. 一般解决方案就两种: 1.延长timeout时间,治标不治本,谁知道到底该延长多少时间才能百分百每次安装都成功。 使用方式: pip --default-timeout1000 install 需要安装的库…

强化学习笔记-07 n-step Bootstrapping 多步TD时分学习

本文是博主对《Reinforcement Learning- An introduction》的阅读笔记,不涉及内容的翻译,主要为个人的理解和思考。 上一节介绍了TD算法,其采用了Bootstrapping方法,当前过去的预估以及即期收益来更新累积收益函数: 前…

通过期待已久的帕丽斯·希尔顿人物化身系列,成为元宇宙的偶像

5,555 个以帕丽斯希尔顿为主题的独特人物化身将于 5 月 31 日推出,每个人物化身均可在 The Sandbox 中使用。 我们与帕丽斯希尔顿及全球流行文化中心的下一代娱乐公司 11:11 Media 合作,很高兴宣布帕丽斯希尔顿的人物化身系列即将推出! 作为对…

Word导出PDF时图片质量下降问题的解决方法

Word导出PDF时图片质量下降问题的解决方法 ⭐️ 最近,在使用Word写完论文以后,另存为“PDF”文件时,发现文档中的图像质量明显下降。本文介绍的方法可以将Word保存为图片无压缩的带有标签的高质量PDF文件,建议仅在定稿时进行以下…

2023系统分析师下午案例分析真题

真题1 阅读以下关于软件系统分析与建模的叙述,在纸上回答问题1至3. 说明: 某软件公司拟开发一套汽车租赁系统,科学安全和方便的管理租赁公司的各项业务,提高公司效率,提升利率。注册用户在使用系统镜像车辆预约时需执行以下操作: (a) 用户登录系统 (b) 查询车辆信息 (c) …

业务安全情报第16期 | 大促8成优惠券竟被“羊毛党”抢走!?

目录 八成秒杀账户是羊毛党 羊毛党风险分析 安全防护及产品组合建议 近期,某电商小程序举办美食节营销活动,提供高额折扣券,并允许用户进行秒杀。然而,羊毛党团伙利用作弊手段,抢购囤券,然后倒卖变现&am…

释放 AI 的力量|2023 年 8 款最佳 AI 图像生成器

1973 年,Harold Cohen 设计的 AARON 系统创造了第一件人工智能生成的艺术品。黑白涂鸦远非所谓的美术,但它们为 DALLE-2 和 Midjourney 等一些出色的 AI 图像生成器奠定了基础。 在过去的 50 年里,AI 图像生成器变得更加智能。通过分析和学习…

线程的概念

文章目录 1. Linux线程概念1.1 什么是线程 2. 页表3. 线程的优点4. 线程的缺点5. 线程用途6.进程和线程7. 线程异常 1. Linux线程概念 1.1 什么是线程 线程是CPU调度的基本单位,它是在进程内部运行的执行流,线程比进程粒度更细,调度成本更低…

(2022,实体迁移)GAN 的通用 one-shot 域自适应

Generalized One-shot Domain Adaptation of Generative Adversarial Networks 公众号:EDPJ 目录 0. 摘要 1. 简介 2. 相关工作 3. 基础 4. 方法 4.1 总览 4.2 风格固定与范例重建 4.3 内部分布学习(Internal distribution learning&#xff0…

计算机硬件(1)

1.4 计算机硬件 电脑硬件是计算机系统中最基本的部分,可理解成看得见、摸得着的实物。一台电脑是由许多的零部件组成,只有这些零部件组合在一起协调工作,才能称之为电脑。一般计算机的硬件可以简单分为以下部件: 主机&#xff08…