cv_bridgeおよびpythonバージョンの問題が原因でコンパイルエラーが発生しましたエラー:return-値のないステートメント、関数内で「void *」を返します[-fpe

 

/usr/include/python2.7/numpy/__multiarray_api.h:1537:144:エラー:return-値のないステートメント、関数内で 'void *'を返す[-fpermissive]
 #define import_array(){if(_import_array() <0){PyErr_Print(); PyErr_SetString(PyExc_ImportError、 "numpy.core.multiarrayがインポートに失敗しました"); NUMPY_IMPORT_ARRAY_RETVALを返します。}}

 

理由:コードはopencv4を呼び出し、cv_bridgeの最新バージョンもopencv4を使用しますが、システムはデフォルトでpython2を使用します

複数の異なるpythonおよびopencvバージョンがシステムにインストールされています

コンパイル中にcv_bridgedによって認識される対応するバージョンは次のとおりです。

cv_bridgeのcmakelists.txtに次のコードを追加して、ライブラリのバージョン情報を出力します。

# Print some message showing some of them
message("##############################################")
message(STATUS "OpenCV library status:")
message(STATUS "    version: ${OpenCV_VERSION}")
message(STATUS "    libraries: ${OpenCV_LIBRARIES}")
message(STATUS "    include path: ${OpenCV_INCLUDE_DIRS}")
message("##############################################")

# Print some message showing some of them
message("##############################################")
message(STATUS "PYTHON library status:")
message(STATUS "    PYTHON_VERSION_MAJOR: ${PYTHON_VERSION_MAJOR}")
message(STATUS "    PYTHON_VERSION_MINOR: ${PYTHON_VERSION_MINOR}")
message(STATUS "    include path: ${PYTHON_NUMPY_INCLUDE_DIR}")
message("##############################################")

 

解決:

Python関連の変数をデフォルトのバージョン2からバージョン3に変更します

cv_bridgeパッケージのcmakelists.txtファイルに、次のコードを追加します。

set(PYTHON_NUMPY_INCLUDE_DIR ~/.local/lib/python3.6/site-packages/numpy/core/include)
set(PYTHON_INCLUDE_PATH /usr/include/python3.6)

コマンドpip3shownumpyを使用してnumpyストレージディレクトリを表示します

python3-Vビューpython3インストールディレクトリ

 

新しいエラーが発生しました:

make [2]:***ターゲットを作成するルールはありません '/ usr / lib / x86_64-linux-gnu / libboost_python37.so '、 ' / home / chenlu / uuv / devel / lib / python2.7 / dist-で必要packages / cv_bridge / boost / cv_bridge_boost.so '。やめる。
CMakeFiles / Makefile2:8771:ターゲット 'vision_opencv / cv_bridge / src / CMakeFiles / cv_bridge_boost.dir / all'のレシピが
make [1]に失敗しました:*** [vision_opencv / cv_bridge / src / CMakeFiles / cv_bridge_boost.dir / all]エラー2

解決策:ソフト接続を追加します

chenlu @ chenlupc:/ usr / lib / x86_64-linux-gnu $ sudo ln -s libboost_python-py36.so libboost_python37.so
chenlu @ chenlupc:/ usr / lib / x86_64-linux-gnu $ sudo ln -slibboost_python-py36。 libboost_python37.a

 

 

 

おすすめ

転載: blog.csdn.net/qq_18276949/article/details/107014026
おすすめ