2012-11-27 131 views
0

我的项目使用Qt(包含Qwt)和Boost ::信号。众所周知,它们的宏是互不兼容的。我使用CONFIG += no_keywords编译了我的项目,并将所有Qt宏命名为大写注册表,即signals = Q_SIGNALS。有项目没有更多的错误,但现在我有错误,在QWT包括这样Qwt和boost :: signals

 
/usr/include/qwtplot3d/qwt3d_extglwidget.h:101:1: error: ‘signals’ does not name a type 
/usr/include/qwtplot3d/qwt3d_extglwidget.h:116:8: error: expected ‘:’ before ‘slots’ 
/usr/include/qwtplot3d/qwt3d_extglwidget.h:116:8: error: ‘slots’ does not name a type 

似乎QWT仍与升压::信号冲突。我能在这里做什么?

+1

你是指较旧的Boost.Signals或Boost.Signals2?我用Qt使用后者,并没有遇到任何问题。 –

+0

是的,我使用旧版本的Boost :: signals 1.46和Qt 4.7.4 – SandyEmerald

+0

考虑转向Boost.Signals2。它没有上述问题,并提供更好的时隙跟踪机制。 –

回答

1

Qwt与升压信号兼容 - 您正在讨论称为QwtPlot3D的库!

当你想在QwtPlot3D中使用升压信号时,你必须修补它的实现,替换信号/插槽/发射宏,就像你用你的代码做的那样。

+0

我知道这个变体,但试图找到另一个决定。 现在,我试图做这样的事情: 和#undef QT_NO_KEYWORDS 的#include <升压/ signals.hpp> 的#define QT_NO_KEYWORDS no_keywords 并与CONFIG编制项目+ = no_keywords – SandyEmerald

+0

顺便说一句,不仅qwtplot3d但也是qwt的其他部分,即: /usr/include/qwt/qwt_picker.h:290:1:错误:'信号'没有命名一个类型 – SandyEmerald

+0

以前的建议没有帮助。 – SandyEmerald