我正尝试在openframeworks上使用带有openCV内容的Basler (https://www.baslerweb.com/)摄像头。我以前使用过Point Grey相机(带有他们的"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似乎"None“正在被定义(变成一个数字常量?)在别的地方。奇怪的是,在编译他们自己的示例时,这种情况永远不会发生。是否有关于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;有什么想法吗?
发布于 2017-10-03 23:23:58
通过预处理器看起来有冲突的定义,可能隐藏在openFrameworks本身或它包含的依赖项中的某个地方。在包含塔的头文件之前添加以下行解决了这个问题:
#undef None
#undef Status去你的,预处理器!
https://stackoverflow.com/questions/46547623
复制相似问题