c++ - Eigen 和 CImg 兼容性问题

标签 c++ graphics compiler-errors eigen cimg

因此,我尝试使用 CImg 记录和显示图像,但我也在使用称为 Eigen 的线性代数库。巧合的是,他们每个人似乎都有一个同名的宏,“成功”。我尝试过执行#undef,但效果不佳。因此,每当我尝试编译时,都会收到此错误,即“成功”在不同的文件中定义了两次。我应该如何在不丢失任何宏的情况下消除此错误?非常感谢您的帮助!

最佳答案

问题的出现是因为 CImg 包含 X11 header X.h,其中定义了一个名为“Success”的宏。该宏与 Eigen 中的 ComputationInfo 枚举定义冲突,因为它有一个名为“Success”的枚举值。

作为变通方法,您可以在包含 CImg 之后和包含 Eigen 之前取消定义“Success”:

#include <CImg/CImg.h>
#ifdef Success
  #undef Success
#endif
#include <eigen3/Eigen/Eigen>

另请参阅关于 Eigen 错误跟踪器的问题 #253:http://eigen.tuxfamily.org/bz/show_bug.cgi?id=253

关于c++ - Eigen 和 CImg 兼容性问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22400905/

相关文章:

java - 如何在 Piccolo2D 中使用多个图层?

java - 不兼容的类型错误: JTextField cannot be converted to String

c++ - 使用 SVM 和 opencv 3 进行图像训练

c++ - C++ 数组上的 Sizeof() 在一个函数中起作用,但在另一个函数中不起作用

c++ - boost::enable_if 有两个条件

java - 在 Android Canvas 上围绕字符串放置一个矩形

java - 3D 外观 2D 绘图的适当转换 (Java)

ios - Xcode 崩溃后的 RestKit 错误

java - "Code too large"Java编译错误

C++ 重载 [] 使用模板访问子 vector