【发布时间】:2017-02-04 02:51:47
【问题描述】:
我正在尝试在 SUSE linux 系统上安装 qpid proton 0.14.0 库,以便将 AMQP 消息传递集成到大型 c++ 程序中。安装需要调用“cmake”和“make all”。调用“make all”后,构建完成 32%,然后抛出错误:
Scanning dependencies of target qpid-proton-cpp
[ 32%] Building CXX object proton-c/bindings/cpp/CMakeFiles/qpid-proton-cpp.dir/src/connection.cpp.o
In file included from {Install_dir}/proton-c/bindings/cpp/include/proton/./././link.hpp:31,
from {Install_dir}/proton-c/bindings/cpp/include/proton/././receiver.hpp:27,
from {Install_dir}/proton-c/bindings/cpp/include/proton/./session.hpp:27,
from {Install_dir}/proton-c/bindings/cpp/include/proton/connection.hpp:28,
from {Install_dir}/proton-c/bindings/cpp/src/connection.cpp:24:
{Install_dir}/proton-c/bindings/cpp/include/proton/././././sender_options.hpp:87: error: declaration of ‘proton::sender_options& proton::sender_options::delivery_mode(proton::delivery_mode)’
{Install_dir}/proton-c/bindings/cpp/include/proton/./././././delivery_mode.hpp:30: error: changes meaning of ‘delivery_mode’ from ‘struct proton::delivery_mode’
In file included from {Install_dir}/proton-c/bindings/cpp/include/proton/./././link.hpp:32,
from {Install_dir}/proton-c/bindings/cpp/include/proton/././receiver.hpp:27,
from {Install_dir}/proton-c/bindings/cpp/include/proton/./session.hpp:27,
from {Install_dir}/proton-c/bindings/cpp/include/proton/connection.hpp:28,
from {Install_dir}/proton-c/bindings/cpp/src/connection.cpp:24:
{Install_dir}/proton-c/bindings/cpp/include/proton/././././receiver_options.hpp:83: error: declaration of ‘proton::receiver_options& proton::receiver_options::delivery_mode(proton::delivery_mode)’
{Install_dir}/proton-c/bindings/cpp/include/proton/./././././delivery_mode.hpp:30: error: changes meaning of ‘delivery_mode’ from ‘struct proton::delivery_mode’
make[2]: *** [proton-c/bindings/cpp/CMakeFiles/qpid-proton-cpp.dir/src/connection.cpp.o] Error 1
make[1]: *** [proton-c/bindings/cpp/CMakeFiles/qpid-proton-cpp.dir/all] Error 2
make: *** [all] Error 2
研究“从 'struct proton::delivery_mode' 错误中更改 'delivery_mode' 的含义让我相信这是一个与结构同名的构造函数有关的问题。我包括了 Deliver_mode下面的结构声明。关于如何安装这些库有什么想法吗?谢谢!
namespace proton {
/// The message delivery policy to establish when opening a link.
/// This structure imitates the newer C++11 "enum class" so that
/// The enumeration constants are in the delivery_mode namespace.
struct delivery_mode {
/// Delivery modes
enum modes {
/// No set policy. The application must settle messages
/// itself according to its own policy.
NONE = 0,
/// Outgoing messages are settled immediately by the link.
/// There are no duplicates.
AT_MOST_ONCE,
/// The receiver settles the delivery first with an
/// accept/reject/release disposition. The sender waits to
/// settle until after the disposition notification is
/// received.
AT_LEAST_ONCE
};
/// @cond INTERNAL
delivery_mode() : modes_(NONE) {}
delivery_mode(modes m) : modes_(m) {}
operator modes() { return modes_; }
/// @endcond
private:
modes modes_;
};
}
【问题讨论】:
-
没有看到 proton::receiver_options 或 proton::sender_options,它们在哪里?
标签: c++ installation qpid