私は自分のプロジェクトを実行しようとしてきましたが、問題が発生しました。多くのデバッグの後、問題を絞り込みましたが、続行する方法がわかりません。
いくつかの背景、私は C++ コード内で python スクリプトを使用しています。これは Python である程度文書化されており、基本的な実行可能ファイルでうまく動作させることができました。#include と -lpython2.6 で、すべてが壮大でした。
ただし、この python スクリプトを共有ライブラリ (.so) から実行すると問題が発生します。この共有ライブラリは、シミュレーション システム (OpenRAVE) によって「モジュール」として「ロード」されます。システムは、SendCommand と呼ばれる「モジュール」の仮想メソッドを使用して、このモジュールと対話します。次に、モジュールは boost::thread を開始し、python に独自のスレッドを与え、シミュレーション システムに戻ります。ただし、Python がモジュールのインポートを開始して動的ライブラリの読み込みを開始すると、次のエラーが原因で失敗すると思われます。
ImportError: /usr/lib/python2.6/dist-packages/numpy/core/multiarray.so: 未定義のシンボル: _Py_ZeroStruct
実行可能ファイルと共有ライブラリでlddを実行しましたが、違いはありません。上記のファイルで nm -D も実行しましたが、_Py_ZeroStruct は実際には未定義です。コマンドのプリントアウトが必要な場合は、喜んで提供します。どんなアドバイスでも大歓迎です、ありがとう。
完全な python エラーは次のとおりです。
トレースバック (最新の呼び出しが最後): ファイル「/usr/lib/python2.6/dist-packages/numpy/__init__.py」の 130 行目 add_newdocs をインポート ファイル「/usr/lib/python2.6/dist-packages/numpy/add_newdocs.py」の 9 行目 lib import add_newdoc から ファイル「/usr/lib/python2.6/dist-packages/numpy/lib/__init__.py」の 4 行目 type_checkインポートから * ファイル「/usr/lib/python2.6/dist-packages/numpy/lib/type_check.py」の 8 行目 numpy.core.numeric を _nx としてインポート ファイル「/usr/lib/python2.6/dist-packages/numpy/core/__init__.py」の 5 行目 マルチアレイのインポート ImportError: /usr/lib/python2.6/dist-packages/numpy/core/multiarray.so: 未定義のシンボル: _Py_ZeroStruct トレースバック (最新の呼び出しが最後): ファイル「/home/constantin/workspace/OpenRAVE/src/grasp_behavior_2.py」の 3 行目 openravepyインポートから * ファイル「/home/constantin/workspace/rospackages/openrave/lib/python2.6/site-packages/openravepy/__init__.py」の 35 行目 openravepy_currentversion = loadlatest() ファイル "/home/constantin/workspace/rospackages/openrave/lib/python2.6/site-packages/openravepy/__init__.py"、16 行目、loadlatest return _loadversion('_openravepy_') ファイル "/home/constantin/workspace/rospackages/openrave/lib/python2.6/site-packages/openravepy/__init__.py"、19 行目、_loadversion 内 mainpackage = __import__("openravepy", globals(), locals(), [ターゲット名]) ファイル「/home/constantin/workspace/rospackages/openrave/lib/python2.6/site-packages/openravepy/_openravepy_/__init__.py」の 29 行目 openravepy_int インポートから * ImportError: numpy.core.multiarray のインポートに失敗しました