在Qt中使用boost会抛出关于被定义为受保护的信号的错误 我尝试用C++编写协议栈DLL。我实际使用协议栈的Gui部分是 用Qt编写。但是我的协议栈是用标准C++编写的。我想要我的 协议栈以异步方式向GUI部件发送数据接收信号。为此,我想到了 有信号和槽机制的。我不想使用Qt信号和插槽,因为我认为它会 强制我将协议堆栈DLL设置为Qt DLL。所以,我想到了使用升压信号。 但在Qt中,他们将信号定义为: #define signals protected

在Qt中使用boost会抛出关于被定义为受保护的信号的错误 我尝试用C++编写协议栈DLL。我实际使用协议栈的Gui部分是 用Qt编写。但是我的协议栈是用标准C++编写的。我想要我的 协议栈以异步方式向GUI部件发送数据接收信号。为此,我想到了 有信号和槽机制的。我不想使用Qt信号和插槽,因为我认为它会 强制我将协议堆栈DLL设置为Qt DLL。所以,我想到了使用升压信号。 但在Qt中,他们将信号定义为: #define signals protected,c++,qt,boost,signals,C++,Qt,Boost,Signals,这取代了所有的升压信号,以保护和我的程序抛出了很多错误。 有没有办法避免这种情况#仅在Boost库中定义? 我不希望它在Qt库中停止。您可以添加 或者,您可以取消定义如下符号: #undef signals 加上你自己的 #define SIGNALS protected 如果你愿意的话。但是,如果迁移到Qt 5,请将protected更改为public。只有在项目引用QtCore时,才会发生这种情况。您的协议栈DLL项目是否包含QT内容?甩掉他们,走吧,也许这是真的hel

这取代了所有的升压信号,以保护和我的程序抛出了很多错误。 有没有办法避免这种情况#仅在Boost库中定义? 我不希望它在Qt库中停止。

您可以添加

或者,您可以取消定义如下符号:

    #undef signals
加上你自己的

    #define SIGNALS protected 

如果你愿意的话。但是,如果迁移到Qt 5,请将protected更改为public。

只有在项目引用QtCore时,才会发生这种情况。您的协议栈DLL项目是否包含QT内容?甩掉他们,走吧,也许这是真的helpful@Arun协议堆栈未使用Qt内容。但是我的Gui部分使用它。为了将Gui和协议层连接起来,我需要在两者中都使用Boost。这会在Gui部分产生问题。但现在问题解决了。我只需要使用Boost::signals2而不是Boost::signals。@sajas,Gr8。感谢分享解决方案:)感谢提供信息。但这会禁用所有Qt内容中的#define,不是吗?如果Qt在内部使用名称“signals”而不是“protected”,该怎么办。以后会不会出错呢。我可以使用Boost::signals2。再次感谢。查看配置详细信息,并指出undef指令。