1

現在、ブーストを使用してプロジェクトを構築しようとしています。ただし、演​​算子が見つからないことを示すエラー メッセージが表示されます。

[  6%] Building CXX object CMakeFiles/osrm-extract.dir/extractor.cpp.o
In file included from /usr/include/luabind/wrapper_base.hpp:31:0,
                 from /usr/include/luabind/back_reference.hpp:27,
                 from /usr/include/luabind/class.hpp:93,
                 from /usr/include/luabind/luabind.hpp:28,
                 from /home/mwh/Desktop/Downloads/Project-OSRM-master/Extractor/ScriptingEnvironment.h:29,
                 from /home/mwh/Desktop/Downloads/Project-OSRM-master/extractor.cpp:23:
/usr/include/luabind/detail/call_member.hpp:319:1: error: missing binary operator before token "("
In file included from /usr/include/luabind/back_reference.hpp:27:0,
                 from /usr/include/luabind/class.hpp:93,
                 from /usr/include/luabind/luabind.hpp:28,
                 from /home/mwh/Desktop/Downloads/Project-OSRM-master/Extractor/ScriptingEnvironment.h:29,
                 from /home/mwh/Desktop/Downloads/Project-OSRM-master/extractor.cpp:23:
/usr/include/luabind/wrapper_base.hpp:92:1: error: missing binary operator before token "("
In file included from /usr/include/luabind/function.hpp:10:0,
                 from /usr/include/luabind/class.hpp:94,
                 from /usr/include/luabind/luabind.hpp:28,
                 from /home/mwh/Desktop/Downloads/Project-OSRM-master/Extractor/ScriptingEnvironment.h:29,
                 from /home/mwh/Desktop/Downloads/Project-OSRM-master/extractor.cpp:23:
/usr/include/luabind/detail/call_function.hpp:326:1: error: missing binary operator before token "("
In file included from /usr/include/luabind/detail/constructor.hpp:12:0,
                 from /usr/include/luabind/class.hpp:96,
                 from /usr/include/luabind/luabind.hpp:28,
                 from /home/mwh/Desktop/Downloads/Project-OSRM-master/Extractor/ScriptingEnvironment.h:29,
                 from /home/mwh/Desktop/Downloads/Project-OSRM-master/extractor.cpp:23:
/usr/include/luabind/wrapper_base.hpp:92:1: error: missing binary operator before token "("
In file included from /usr/include/luabind/class.hpp:107:0,
                 from /usr/include/luabind/luabind.hpp:28,
                 from /home/mwh/Desktop/Downloads/Project-OSRM-master/Extractor/ScriptingEnvironment.h:29,
                 from /home/mwh/Desktop/Downloads/Project-OSRM-master/extractor.cpp:23:
/usr/include/luabind/detail/call_member.hpp:319:1: error: missing binary operator before token "("
make[2]: *** [CMakeFiles/osrm-extract.dir/extractor.cpp.o] Error 1
make[1]: *** [CMakeFiles/osrm-extract.dir/all] Error 2
make: *** [all] Error 2

いくつかの調査を行ったところ、実際には luabindのバグであることがわかりました。変わると言う

#elif BOOST_PP_ITERATION_FLAGS() == 1

と :

#else
#if BOOST_PP_ITERATION_FLAGS() == 1

問題を修正します。そこで、ファイル /usr/include/luabind/wrapper_base.hpp を修正しました。しかし、うまくいきません。

後で、その問題を修正するパッチがあることがわかりました。しかし、そのパッチを luabind に追加する方法がわかりません。やり方を教えてください。前もって感謝します。

4

1 に答える 1

2

私は同じ問題を抱えています。

私は Ubuntu 12.04、ブースト 1.49、luabind 0.9.1、g++ 4.6.3 を使用していますが、このブーストと luabind の間に非互換性があるようです。

これらのバージョンのみですが、オフィスではboost 1.41とluabind 0.9.0があり、正常に動作します。

編集:

実際には、あなたが言及したWebページで説明されているように、call_function.hpp、call_member.hpp、wrapper_base.hppの3つのファイルを変更した後。となることによって:

#elif BOOST_PP_ITERATION_FLAGS() == 1
...
#end

は次のように置き換えられます。

#else
#if BOOST_PP_ITERATION_FLAGS() == 1
...
#end
#end

luabind プログラムをコンパイルできました。

2 つ目の #end を追加するのを忘れたのではないでしょうか?

于 2013-08-24T11:23:19.683 に答える