2017-07-15 8 views
0

私はラズベリーパイの代わりにWindowsでブースト・パイソンを始めようとしているから、ブースト(またはその依存関係)に関する問題に直面しています。python36.libの代わりにpython27.lib私はPython 3.6を使用しています)ブーストPython27ライブラリを維持する

私のラズベリーパイで、私は2倍になったバンドルされたpythonを使用していました。今、私はboost_python3とリンクしています。私はCMakeのすべての私のインクルードパスをチェックし、それらはすべて3.6のpythonパスを指しています。私は、私のシステム上でpython(1つのスタンドアロン2.7とcygwinの1つ)を別のバージョン(私はcygwinフォルダの名前をcygwin2に変更し、スタンドアロンのpython 2.7フォルダを削除したもの)を含むすべてのパスの名前を変更しました。それはまだそのライブラリが欲しいです...

私のプログラムでは、私は単一の#includeがpythonに関連しており、それは#include <boost/python.hpp>です。私はそれに続いてVisual Studioにインクルードして、私がCMakeで指定したboostディレクトリのpython.hppにつながっているので、解像度が働いています。 boost/python.hppの内部では、最終的にはwrap_python.hppになります。これには、Pythonヘッダーが含まれています。私もVisual Studioでこれを追跡し、Python 3.6フォルダのファイルにつなぎます。

そのインクルード(コメントを削除)にコメントを追加するとプログラムがコンパイルされるので、私は誤ってCMakeにライブラリとして追加していませんでした。どこか#pragma commentである必要があります。だから、総括する

  • 私はどこにでも
  • のpython 3.6を使用しています "修正" それ
  • を含ん私だけboost/python.hppコメント解除
  • 後を含め、私のコード
  • には#include <Python.h>はありません
  • CMakeのブーストの自動リンクを無効にしましたadd_definitions(... -DBOOST_ALL_NO_LIB -DBOOST_PYTHON_DEBUG)

私の質問(複数可):これを引き起こしている可能性がありますまたは何

  • ?ブーストは直接Pythonライブラリにリンクしていますか?
  • プリプロセッサが#pragmaに遭遇するすべてのファイル/行をVisual Studioで何らかの形で強調表示する可能性はありますか?(私はそれが何とかどこかで2.7 pythonを取得していると確信しています。 。)
+0

ブーストオートリンクが無効になっていますか?私はそれが自動的にpythonライブラリとオートリンクするとは思わないが、 'boost_python3'ではなく' boost_python'を引っ張っているかもしれない。 –

+1

ああ、ありがとう、私はそれを言及することを完全に忘れていた、私は私の質問にそれを編集します! (はい、私はそれを無効にしました) – Cromon

+0

小さなソースファイルとこの問題を再現するCMakeLists.txtを使って[mcve]を作成し、それらをあなたの投稿に含めることができますか? –

答えて

0

I just went through thisブーストとリンクするどのLIBSのかを決定するためにPY_MAJOR_VERSIONをチェックします。したがってc++ > General > Additional Include Directoriesでは、あなたのpythonインクルードパスを追加してください。そうでなければ、デフォルトで2.xのlibsが引き出されます。

関連する問題