2017-08-07 26 views
1

私は、Microsoft Visual Studio Professional 2017および32ビットPython 3.4を使用してBoost 1.64.0 Pythonライブラリを構築しました。私が得られたライブラリーに対してアプリケーションを作成するとき今、私は次のリンクエラーになっています:VS2017でBoost Pythonライブラリを使用してビルドする方法

LINK : fatal error LNK1104: cannot open file 'libboost_python-vc141-mt-1_64.lib'

を私は段階/ libにディレクトリに見てきた、そして実際に、ライブラリーは、libboost_python 命名されました3 -vc141-mt-1_64.lib(名前にを書き留めます)。 Boost PythonライブラリがPython 3を使用して生成されたという事実を参照していると仮定しています。なぜ、ビルドされたライブラリとプロジェクトがインポートしようとしているライブラリの間に名前の矛盾がありますか?それは単に私のプロジェクト構成で欠けているマクロ定義ですか? MSVCビルドでは

+0

システム上にpython2とpython3がある人は、pythonではなくpython3 pyhon3という名前になります。私はこれがあなたの問題の根源になるかもしれないと思っていますが、私は本当に分かりません。 – kpie

+0

'VCC++ Directories - > Include Directories'に' c:¥....¥Python36_3¥include'パスを追加してください。物事がうまくいくと私はほとんど確信しています。 – lakeweb

答えて

1

boostヘッダはMSVC#pragma commentsboostライブラリへautolinkに使用し、boost/config/auto_link.hppを参照してください。 auto_link.hppを含むことに加え

は、boost/python/detail/config.hppファイルが含まれています:MSVCはlibboost_python-vc141-mt-1_64.libautolinkしようとしている理由

// Set the name of our library, this will get undef'ed by auto_link.hpp 
// once it's done with it: 
// 
#define BOOST_LIB_NAME boost_python 

です。

あなたのboostビルドが明らかにlibboost_python3-vc141-mt-1_64.libをビルドしました。 @kpieによって示唆されるように、あなたのboostビルドは、それはPython 3やPython 2のために組み込まれているかどうかに応じて、Pythonのライブラリ・ファイルに名前をしていることがあります...

this質問への回答python 3ためboostを構築する方法について説明します。それはビルドに関するマクロの質問に答えるかもしれません。

問題を解決するには、disable autolinkingとするか、単にライブラリファイルの名前を変更して "3"を削除します。

+0

あなたがリンクしている質問と回答を読んだ後、私はまだ正しい道を進んでいると少し混乱しています。オートリンク機能を無効にすることをお勧めします。それはBoost Python 3で自動リンクを使用する方法がないことを意味しますか?ファイルの名前を変更することをお勧めする場合は、user-config.jamで設定されている設定オプションか、Windowsエクスプローラで手動で名前を変更することをお勧めしますか? Boost Pythonのデザイナーは、生成されたライブラリ名を、オートリンクされている名前とは違うものに強制し、修正する方法はないと信じるのは難しいです。 –

+0

リンクした質問に基づいて、私は効果がなかった 'PY_MAJOR_VERSION = 3'マクロを定義しようとしました。また、私の追加のインクルードディレクトリ設定の最初のエントリとしてPython 3のインクルードディレクトリを追加しようとしましたが、これもうまくいきませんでした。私は私のuser-config.jamファイルから明示的なバージョンを削除しようとし、そのファイル名に "3"を付けずにライブラリを生成するかどうかを調べるかもしれません。 –

+0

私のboostビルドには、 '' python'と 'python3'の両方のライブラリが含まれています。あなたのuser-config.jamファイルが問題の原因かもしれないと思います。 'MSVC boost'で作成されたバイナリは、ここにあります(https://sourceforge.net/projects/boost/files/boost-binaries/1.64.0/)。私はそれらのうちの1つだけを使用することをお勧めします。 – kenba

関連する問題