我正在尝试使用CImg记录和显示图像,但同时我也在使用一个名为Eigen的线性代数库。巧合的是,它们似乎都有一个名称相同的宏“Success”。我已经尝试过#Undef,但这并不顺利。因此,每当我尝试编译时,都会出现错误,指出“Success”在不同的文件中被定义了两次。那么,我该如何消除这个错误,而不会失去任何宏?非常感谢您的帮助!
我正在尝试使用CImg记录和显示图像,但同时我也在使用一个名为Eigen的线性代数库。巧合的是,它们似乎都有一个名称相同的宏“Success”。我已经尝试过#Undef,但这并不顺利。因此,每当我尝试编译时,都会出现错误,指出“Success”在不同的文件中被定义了两次。那么,我该如何消除这个错误,而不会失去任何宏?非常感谢您的帮助!
#include <CImg/CImg.h>
#ifdef Success
#undef Success
#endif
#include <eigen3/Eigen/Eigen>
无论是Eigen还是CImg都没有这样的# define。然而,Eigen在Eigen命名空间中有这样的枚举,因此问题更可能来自X11 X.h
头文件,它# define Success。
因此,如果您需要使用来自X11的Success,请在X11之前包含Eigen的头文件(或包含它的任何人)。
如果您需要使用Eigen中的Success,请在包含Eigen之前#define Success。
您可能也希望在CImg中显示X11头文件的包含内容,方法是在包含"CImg.h"
之前将宏cimg_display
定义为0
(或者在编译时加上-Dcimg_display=0
标志)。当然,只有在您不需要CImg的显示功能时才这样做。
#undef
取消定义它。因此,这真的取决于你在代码中需要什么。