2017-07-14 28 views
0

今朝私はPython 3.6をインストールして、ブーストライブラリをコンパイルするために私のb2設定を取得しました。そして、libboost_python3... libパス。シンプルでその後:VS LINKはlibboost_python3-vc140-mt-gd-1_65の代わりに 'boost_python ...'ファイルを開くことができません

#include "stdafx.h" 
#include <boost/python.hpp> 

char const* greet() 
{ 
    return "hello, world"; 
} 

BOOST_PYTHON_MODULE(hello_ext) 
{ 
    using namespace boost::python; 
    def("greet", greet); 
} 

私は、リンカエラーを取得:

LINK : fatal error LNK1104: cannot open file 'boost_python-vc140-mt-gd-1_63.lib' 

私はUSING_BOOST_PYTHON3のようなフラグの同類を探してきましたが、私は読んですべてのものは、それが自動的に行われるべきであると述べています。 Boostには、私が構築したものに応じて適切なlibを含める必要があります。

This guy同じ問題がありましたが、回答が得られませんでした。それは私が右側の「類似の質問」のリンクにアクセスできるほど近いものでした。しかし、私はVSがこれの一部であるかどうかを見ることができません。

アップデート:私だけが見つかりました:

#if PY_MAJOR_VERSION == 2 
# define BOOST_LIB_NAME boost_python 
#elif PY_MAJOR_VERSION == 3 
# define BOOST_LIB_NAME boost_python3 
#endif 

をだから今、それは私のメジャーバージョン2ではなく3である理由のように見えますか?そして、たとえI:の上部に

#define PY_MAJOR_VERSION 3 

右私のstdafx.hそれはまだのpython 2のlibにリンクします。 !?

もう一つ更新: だから、早い段階で、私は、私はちょうどC:\cpp\Python36_3\libsに設定C:\cpp\Python27\libsに追加ライブラリを設定していたし、今私が手のpython 2.7は、「インストール」必要はありません。

LINK : fatal error LNK1104: cannot open file 'python27.lib' 

ブーストは何のpythonで........私は私の頭の中でこのすべてを持っているがから2.xの代わりに、3.xの

答えて

0

にリンクする

ブーストチェックをしようとしているような意味を作ります使用しているパスをインクルードします。そしてなぜあなたは2.7か3.6で作業したいかもしれません。したがって、PythonインクルードはAdditional Include Directoriesに設定する必要があります。私は2.7に設定されていたし、忘れてしまった、私の悪い。私はPY_MAJOR_VERSIONがPythonで定義されていることを理解しました。

まだリンクの問題がありましたが、今は静的にリンクしたいだけですが、 Boost Python will force dynamic linking of boost, regardless of user optionsです。しかし、そのポストはそれを修正します。

私はまだlibboost_python3-vc140-mt-sgd-1_65.libを持っていませんでした。私はちょうどb2 .. --build-type=complete installをやったことがあります。私はまだコンソールを開いていたので、リストを見て、Pythonをビルドしました!何らかの理由でb2が、静的にリンクされたPythonライブラリのためだけに、フォルダC:\Boost\libを作成しました。その他のライブラリはすべてC:\cpp\boost_1_65_0\stage\lib

これまでの冒険はどのようなものでしたか?

関連する問題