我正在尝试在openframeworks上使用Basler(https://www.baslerweb.com/)相机和一些openCV。我以前使用Point Grey相机(使用他们的#34; FlyCapture2" SDK)没有太多麻烦。 Basler有一种名为Pylon SDK的东西适用于Windows,Linux和Mac OS。
我可以毫无问题地编译Pylon自己的示例,但是当我#include <pylon/PylonIncludes.h>
时,我立即得到了编译器问题。我已经适当地修改了我的项目的config.make文件(我认为),所以编译器肯定会找到头文件,但我不断收到与Pylon库中更深层次相关的错误,特别是:
In file included from /usr/include/X11/Xlib.h:44:0,
from /usr/include/GL/glx.h:30,
from /home/stephen/of_v0.9.8_linux64_release/libs/openFrameworks/utils/ofConstants.h:184,
from /home/stephen/of_v0.9.8_linux64_release/libs/openFrameworks/ofMain.h:5,
from /home/stephen/of_v0.9.8_linux64_release/apps/myApps/canPointerOsc/src/main.cpp:1:
/opt/pylon5/include/GenApi/Types.h:130:9: error: expected identifier before numeric constant
None, //!< name resides in custom namespace
似乎&#34;无&#34;在其他地方被定义(进入数字常量?)。奇怪的是,这在编译自己的样本时从未发生过。有没有关于openFrameworks编译过程(传递给G ++的选项?)可能会破坏他们自己代码的这一部分:
//! Defines from which standard namespace a node name comes from
//! \ingroup GenApi_PublicUtilities
typedef enum _EStandardNameSpace
{
None, //!< name resides in custom namespace
GEV, //!< name resides in GigE Vision namespace
IIDC, //!< name resides in 1394 IIDC namespace
CL, //!< name resides in camera link namespace
USB, //!< name resides in USB namespace
_UndefinedStandardNameSpace //!< Object is not yet initialized
} EStandardNameSpace;
有什么想法吗?
答案 0 :(得分:0)
看起来通过预处理器存在冲突的定义,可能隐藏在openFrameworks本身或其包含的依赖项之一。在包含Pylon Header文件之前添加以下行解决了问题:
#undef None
#undef Status
Goddam你,预处理器!