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と同じ名前である必要があることに注意してください。