Visual Studio在Debug模式下,MFC工程中包含Eigen库时的定义冲突的问题

这篇具有很好参考价值的文章主要介绍了Visual Studio在Debug模式下,MFC工程中包含Eigen库时的定义冲突的问题。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Visual Studio在Debug模式下,MFC工程中包含Eigen库时的定义冲突的问题

报错信息

Eigen\src\Core\PlainObjectBase.h(143,5): error C2061: 语法错误: 标识符“THIS_FILE”
Eigen\src\Core\PlainObjectBase.h(143,1): error C2333: “Eigen::PlainObjectBase::operator new”: 函数声明中有错误;跳过函数体
Eigen\src\Core\CwiseNullaryOp.h(341,27): error C2039: “setConstant”: 不是 “Eigen::PlainObjectBase” 的成员

以上仅仅列举了一部分报错信息。当Visual Studio编译报错时,不要看“错误列表窗口”,而要看“输出”窗口。在输出窗口中搜索“error”,找到第一个报错信息的位置,能最快找出错误原因。
如下图所示:
Visual Studio在Debug模式下,MFC工程中包含Eigen库时的定义冲突的问题,c++,MSVC,MFC,visual studio,mfc,ide

解决方法

根据报错信息,"THIS_FILE"是MFC在debug模式下启用的一个宏,方便调试时确定内存泄漏位置,看来报错信息与它有关。
THIS_FILE一同定义的宏还包括DEBUG_NEW等。猜想是DEBUG_NEW重载了new运算符,而Eigen中也重载了new运算符,在DEBUG_NEW后包含Eigen就会导致new定义不清的错误。
所以尝试将Eigen的包含位置放到DEBUG_NEW定义之前。具体而言,找到包含Eigen的代码中的DEBUG_NEW宏定义位置,如下所示:

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

将包含语句放在该代码段之前即可。如果不需要检测内存泄漏,也可以直接删去这段代码。

如果在其他地方遇到此类问题,解决方法无外乎调整Eigen的包含位置,在包含其他各类库之前包含它。例如,在包含boost相关头文件之前包含Eigen/Core文章来源地址https://www.toymoban.com/news/detail-629821.html

到了这里,关于Visual Studio在Debug模式下,MFC工程中包含Eigen库时的定义冲突的问题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Visual Studio 2017工程在Visual Studio 2019打开碰到的问题

    Visual Studio 2017的工程可以正常使用,在Visual Studio 2019中打开碰到两个问题,Error code: 0x80004005 和 cannot open source file “xxx.h” ,解决了这两个问题。 参考Visual Studio 2017: Project is out of date with error (0x80004005) 假定是 HelloWorld 的工程,那么修改 HelloWorld.vcxproj 文件,将以下内容: P

    2024年02月05日
    浏览(65)
  • Visual Studio交叉编译ARM工程

    1.1、 软件安装 在Windows10/Windows11系统上安装Visual Studio 2022和装有Linux系统的虚拟机VMware Workstation Pro。(这里以Visual Studio 2022为例,也可以换成其它支持远程调试的工具版本如Visual Studio 2019及更高的版本) 注意:安装Visual Studio 2022时一定要勾选上“使用C++的Linux和嵌入式开发”

    2024年04月12日
    浏览(68)
  • Visual Studio(2015)如何打开Visual Basic 6.0 *.vbp工程?

        以下以Visual Basic创建简易的Windows窗体应用程序为例。     众所周知,Visual Studio(这里以Visual Studio 2015为例)这个被一些人称为宇宙最强的IDE,可以创建Visual Basic工程进行代码编辑。     这样的Visual Basic工程操作路径:文件→新建→项目...→已安装→模板→Visual Basic→

    2024年02月04日
    浏览(82)
  • visual Studio MFC 平台实现拉普拉斯和拉普拉斯与直方图均衡化与中值滤波相结合实现比较

    本文使用visual Studio MFC 平台实现图像增强中的拉普拉斯变换,同时拉普拉斯一般不会单独使用,与其他平滑操作相结合,本文使用了拉普拉斯与直方图均衡化以及与中值滤波相结合,也对三种方式进行了对比 关于基础工程的创建可以参考 01-Visual Studio 使用MFC 单文档工程绘制

    2024年02月04日
    浏览(49)
  • Visual Studio 2010环境新建C工程项目

    学习C语言使用的编译器比较多,常见的有VC++6.0、Dev-C++、Visual Studio、CodeBlocks等环境软件。 Visual Studio和CodeBlocks的功能就稍微强大许多,但是其操作的步骤也相对复杂些,Dev-C++的操作简便,功能也相对少些,对于编写学习基础简单的C代码已经足够了的。 选择编译器一般根据

    2024年02月06日
    浏览(52)
  • Visual Studio 向工程中添加现有文件夹

    前言: 在创建C#类库(dll)工程后,需要把现有的C#文件添加进工程中 步骤1.将所有文件夹复制到工程中 步骤2. 点击这个图标,显示所有文件夹  工程目录下的所有文件夹都会被显示出来  选中需要添加的文件夹,右键-包含到项目  然后再次点取消显示所有文件夹即可

    2024年02月05日
    浏览(59)
  • 通过cmake工程生成visual studio解决方案

    visual studio是一个很强大的开发工具,这个工具主要是通过解决方案对我们的源码进行编译等操作。但是我们很多时候拿到的可能并不是一个直接的解决方案,可能是是一个cmake工程,那么这个时候我们就需要通过cmake工程生成解决方案,然后就可以通过visual studio进行编译和调

    2024年02月15日
    浏览(44)
  • 在visual studio里安装Python并创建python工程

        在2009年,云计算开始发力,Python、R、Go这些天然处理批量计算的语言也迅猛发展。微软在2010年,把Python当成一个语言包插件,集成到了visual studio 2010里。在\\\"云优先,移动优先\\\"的战略下,于2015年,微软收购了R语言的创始团队。又过5年,即在2020年,Python语言的创始人吉

    2024年02月06日
    浏览(41)
  • 在visual studio里配置Qt插件并运行Qt工程

        Qt插件,也叫qt-vsaddin,它以*.vsix后缀名结尾。visual studio简称为VS,从visual studio 2010版本开始,VS支持Qt框架的开发,Qt以插件方式集成到VS里。这里简述在visual studio 2019里配置Qt 5.14.2插件,并配置Qt环境、编译和运行Qt工程。     下载VS2019,官网地址: https://visualstudio.mi

    2024年02月07日
    浏览(52)
  • OCCT教程二:在visual studio上创建一个occt工程

    上一篇博客讲述如何在windows下使用MSVC对occt进行编译,这一篇演示如何创建简单的OCCT工程. 首先打开visual studio,创建一个C++空项目,并且随便起一个名称,例如Project1  需要两点注意:1.在资源文件中添加一个main.cpp。                           2.在解决方案平台中选择X6

    2024年02月06日
    浏览(53)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包