2011-01-08 12 views
2

次の組み合わせを使用しようとした私だけです: boost_1_45_0、MSVC 10、Python31?ブーストPythonの例が2回失敗しました

boost(boost_1_45_0 \ libs \ python \ example \ quickstart \ embedding.cpp)の基本サンプルが見つかりませんでした。 コンパイル時の問題は:

if (PyImport_AppendInittab("embedded_hello", initembedded_hello) == -1) 
    throw std::runtime_error("Failed to add embedded_hello to the interpreter's " 
      "builtin modules"); 

私は正しい名前が initembedded_hello しかし init_module_embedded_hello ではないことを発見しました。だから私の最初の質問は、この名前変更について正しいのですか?

from embedded_hello import * 

は、インポートをコメントアウト内部のpythonのモジュールは、(IOのように)正常に動作していることを示しています。私の宣言モジュールをインポートするときに

第二の問題は、SystemError: NULL result without error in PyObject_Callです。だから、2番目の質問は、輸入の問題は何ですか?

助けていただけたら幸いです!

+0

すべてが64ビット/ 32ビットとしてビルドされていますか? – GWW

+0

@ GWW - それは32 – Dewfy

+0

ああ、私はときどきそのような奇妙なエラーが発生します.1つのものが64ビットとして構築され、残りが32ビットであれば。 – GWW

答えて

5

Python 3ではinitembedded_helloの代わりにPyInit_embedded_helloを使用します。msvc9で私のために働きます。

明らかにquickstart \ embedding.cppはPython 3のために更新されていません。同様の最新のpyhon/test/exec.cppを見てください。

Msvc10は、Pythonとは異なるCランタイムライブラリを使用しているため、ランタイムクラッシュが発生する可能性があります。 Python 2.6,2.7,3.1、および3.2の拡張機能を構築するために推奨されるコンパイラは、msvc9、またはvc90crtとリンクするコンパイラです。

+0

答えに感謝しますが、私の質問はPython3とまったく関係しています。 boostでPython3を使うことは可能ですか? – Dewfy

+0

@Dewfy:はい、boostはPython 3で動作します。embedded.cppの例では、initembedded_helloの代わりに** PyInit_embedded_hello **を使用する必要があります – cgohlke

関連する問題