2016-09-26 9 views
0

AMQPメッセージを大規模なC++プログラムに統合するために、SUSE Linuxシステムにqpid陽子0.14.0ライブラリをインストールしようとしています。インストールには "cmake"と "make all"が必要です。 『構造体陽子::はdelivery_mode』エラーから 『はdelivery_mode』の意味は」変化を研究するApacheのqpidをインストールするときに "エラー:変更の意味"

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 

このことを信じて私をリード:「すべて作る」を呼び出す際に、ビルドは、エラーをスローし、32%に完全取得します構造体と同じ名前を持つコンストラクタ関数を実行する問題である。私は以下の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_; 
}; 

} 
+0

proton :: receiver_optionsまたはproton :: sender_optionsは表示されません。どこにありますか? –

答えて

0

これは、 GCCバージョンの問題です.GCCのいくつかのバージョンは、この状況をエラーとして扱います。これらのバージョンの1つを使用している必要があります。具体的にタイプproton::delivery_modeを参照することによってあいまいさがあります。また、私が修正した相互運用性テストの構築にも問題がありました。私はまだ私が望むPythonのバインディングを構築することはできませんが、以下の変更でProton自身がビルドします。 Pythonバインディングの問題を見つけたら、この回答を更新します。

diff --git a/proton-c/bindings/cpp/include/proton/receiver_options.hpp b/proton-c/bindings/cpp/include/proton/receiver_options.hpp 
index 413e4d4..111865d 100644 
--- a/proton-c/bindings/cpp/include/proton/receiver_options.hpp 
+++ b/proton-c/bindings/cpp/include/proton/receiver_options.hpp 
@@ -70,7 +70,7 @@ class receiver_options { 
    PN_CPP_EXTERN receiver_options& handler(class messaging_handler&); 

    /// Set the delivery mode on the receiver. 
- PN_CPP_EXTERN receiver_options& delivery_mode(delivery_mode); 
+ PN_CPP_EXTERN receiver_options& delivery_mode(proton::delivery_mode); 

    /// Automatically accept inbound messages that aren't otherwise 
    /// released, rejected, or modified (default is true). 
diff --git a/proton-c/bindings/cpp/include/proton/sender_options.hpp b/proton-c/bindings/cpp/include/proton/sender_options.hpp 
index 9d7bb42..58a42cb 100644 
--- a/proton-c/bindings/cpp/include/proton/sender_options.hpp 
+++ b/proton-c/bindings/cpp/include/proton/sender_options.hpp 
@@ -74,7 +74,7 @@ class sender_options { 
    PN_CPP_EXTERN sender_options& handler(class messaging_handler&); 

    /// Set the delivery mode on the sender. 
- PN_CPP_EXTERN sender_options& delivery_mode(delivery_mode); 
+ PN_CPP_EXTERN sender_options& delivery_mode(proton::delivery_mode); 

    /// Automatically settle messages (default is true). 
    PN_CPP_EXTERN sender_options& auto_settle(bool); 
diff --git a/proton-c/bindings/cpp/src/interop_test.cpp b/proton-c/bindings/cpp/src/interop_test.cpp 
index de6ae63..a383b26 100644 
--- a/proton-c/bindings/cpp/src/interop_test.cpp 
+++ b/proton-c/bindings/cpp/src/interop_test.cpp 
@@ -33,6 +33,7 @@ namespace { 
using namespace std; 
using namespace proton; 

+using proton::codec::get; 
using proton::codec::encoder; 
using proton::codec::decoder; 
関連する問題