[再現] boost pythonnumpy_boost.pythonとboost.numpyをインストールする際の注意事項

参照リンク:Pythonのnumpy.put

boost.numpyのインストール時にエラーをコンパイルします

 エラーは、builtin_float_dtype <128>が定義されていないことです。この関数はboost.numpy / libs / src /dtype.cppに表示されます。

 #if NPY_BITSOF_LONGDOUBLE> NPY_BITSOF_DOUBLE

 テンプレート<> struct builtin_float_dtype <NPY_BITSOF_LONGDOUBLE> {

 static dtype get(){return DTYPE_FROM_CODE(NPY_LONGDOUBLE); }

 };

 テンプレートdtypeget_float_dtype <NPY_BITSOF_LONGDOUBLE>();

 テンプレート<> struct builtin_complex_dtype <2 * NPY_BITSOF_LONGDOUBLE> {

 static dtype get(){return DTYPE_FROM_CODE(NPY_CLONGDOUBLE); }

 };

 テンプレートdtypeget_complex_dtype <2 * NPY_BITSOF_LONGDOUBLE>();

 #endif

 numpyはNPY_BITSOF_LONGDOUBLEとNPY_BITSOF_DOUBLEを同じ長さとして定義しているため、この関数は作成されませんが、test /dtype_mod.cppに表示されます。

 //フロートと複雑

 p :: def( "accept_float32"、accept);

 p :: def( "accept_complex64"、accept <std :: complex>);

 p :: def( "accept_float64"、accept);

 p :: def( "accept_complex128"、accept <std :: complex>);

 if(sizeof(long double)> sizeof(double)){

 p :: def( "accept_longdouble"、accept);

 p :: def( "accept_clongdouble"、accept <std :: complex>);

 }

 あなたはそれをログアウトすることができます:

 //フロートと複雑

 p :: def( "accept_float32"、accept);

 p :: def( "accept_complex64"、accept <std :: complex>);

 p :: def( "accept_float64"、accept);

 p :: def( "accept_complex128"、accept <std :: complex>);

 / * if(sizeof(long double)> sizeof(double)){

 p :: def( "accept_longdouble"、accept);

 p :: def( "accept_clongdouble"、accept <std :: complex>);

 } * /

 ブースト.numpyをcmakeでコンパイルするときは、LIBRARY_TYPEをSHAREDに設定し、大文字にする必要があることに注意してください

 boot.pythonとboost.numpyを使用してファイルをコンパイルする方法は?

 (1)boost-build.jamを作成します

 コンテンツ:

 ブーストビルド "d:/ boost_1_59_0 / tools / build / src";

 上記のパスは、ブーストツールライブラリに対応しています

 (2)Jamrootファイルを作成します

 コンテンツ:

 #Copyright David Abrahams 2006.Boostの下で配布

 #ソフトウェアライセンス、バージョン1.0。(添付を参照

 #ファイルLICENSE_1_0.txtまたはhttp://www.boost.org/LICENSE_1_0.txtでコピー)

 pythonをインポートします;

 もし![python.configured]

 {{

 ECHO "通知:user-config.jamでPythonが構成されていません";

 ECHO "通知:デフォルト構成を使用します";

 Pythonを使用する;

 }

 #Boostプロジェクトへのパスを指定します。このプロジェクトを移動すると、

 #このパスを調整して、Boostルートディレクトリを参照します。

 使用-プロジェクトブースト

 :D:/ boost_1_59_0 /;

 lib boost_numpy :: boost_numpy。;

 #すべてが使用するプロジェクト全体の要件を設定します

 #グローバルIDがであるプロジェクトのboost_pythonライブラリ

 #/ boost / python。

 事業

 :要件/ boost / python // boost_python

 boost_numpy

 / boost // headers

 :使用法-要件/ boost // headers

 ;

 #3つの拡張モジュールを宣言します。複数指定できます

 #スペースで区切られたコロンの後のソースファイル。

 python-extension wakeModel:main.cpp wakeModel.cpp;

 #拡張子とBoost.Python DLLを現在のディレクトリに配置します。

 #スクリプトを手動で実行すると機能します。

 便利なコピーをインストールします

 :wakeModel

 :SHARED_LIBPYTHON_EXTENSIONで

 。

 ;

 #テスト宣言の構文をクリーンアップするための小さな「ルール」(関数)

 これらの拡張モジュールの数。

 ローカルルールの実行テスト(テスト名:ソース+)

 {{

 インポートテスト;

 tests.make-test run-pyd:$(sources):: $(test-name);

 }

 #テストターゲットを宣言する

 #run-test wakeModel:wakeModel_ext wakeModel.py;

 (3)次のコマンドを実行します。

 bjam toolset = gcc release threading = multi

 (4)libboost_python-mgw51-mt-1_59.dllとlibboost_numpy.dllを現在のディレクトリにコピーします。libboost_numpy.dllの依存ライブラリはlibboost_python-mgw51-mt1_59.dllと同じ名前である必要があることに注意してください。

おすすめ

転載: blog.csdn.net/u013946150/article/details/113078354