3

Boost.Python で C++ と Python をリンクしようとしています。

Visual Studio 2012 Express バージョン、Python 2.7、および Boost 1.54 を使用しています。

Boost の公式 Web サイトの指示に従って、Boost を自分のマシンにインストールしました。つまり、次の手順を実行しました。

  1. ビルド済みのバイナリをダウンロードして にインストールしC:\local\boost_1_54\ます。

  2. 私は bjam を実行しますb2 --build-dir=C:\local\boost_1_54 toolset=msvc11.0 --build-type=complete stage

次に、プロパティパネルで次のような操作を行いました。

  1. C/C++に追加C:\local\boost_1_54\; C:\Python27\include;-> 一般 -> 追加のインクルード ディレクトリ。

  2. リンカーに追加C:\local\boost_1_54\libs; C:\local\boost_1_54\lib64-msvc-11.0; C:Python27\libs;- >一般 - >追加のライブラリディレクトリ。

  3. "Not Using Precompiled Headers"C/C++->プリコンパイル済みヘッダー->プリコンパイル済みヘッダーに設定します。

そして、ソース コードが次のように非常に単純な空のプロジェクトを作成しました (実際に Hello World の例を実行しようとしましたが、気を散らすものを排除するためにコードを削減する必要がありました)。

#include <boost/python.hpp>

int main()
{   
    return 0;
}

ただし、ソリューションをビルドしようとすると、次の 2 つのエラーが表示されます。

エラー LNK2001: 未解決の外部シンボル__imp___Py_NoneStruct

エラー LNK1120: 1 つの未解決の外部情報

行にコメントしたところ#include <boost/python.hpp>、エラーはなくなりました。

私を混乱させるのは、python.hppが本来あるべきフォルダーにあることを見つけることができるということです。

私が間違っていることを知ってもいいですか?

================================================== ========

編集:

#include <Python.h>コードで使用してみました。しかし、別のエラーが発生します

エラー LNK1104: ファイル 'python27_d.lib' を開けません

誰でも私を助けることができますか?

4

2 に答える 2

2

次の答えは問題を解決しようとします

error LNK1104: cannot open file 'python27_d.lib'

_dサフィックスは、ライブラリのデバッグ バージョンを検索していることを意味します。Python インストールはリリース ビルドであるため、デバッグ プロジェクトをリンクすることはできません。

デバッグ/リリース

デバッグ バージョンにはシンボル情報があり、通常は最適化されていません。このバージョンはデバッグに使用され、Retail Version はリリースされたバージョンです。

プロジェクトをデバッグ モードでビルドしている場合、プロジェクトは常にデバッグ ライブラリとのリンクを試みます。この問題を克服するには

  1. デバッグの代わりにリリース ビルドを作成します。python27.libあなたのプロジェクトは、代わりにとリンクしようとしpython27_d.libます。参照方法: リリース ビルドを作成する
  2. Python ソースをダウンロードして、VS2008 でビルドすることもできます (はい、Python 2.7 は VS 2008 でビルドされています)。x64 をターゲットにしている場合は、少なくとも VS2008 Professional バージョンが必要です。これにより、 が生成されpython27_d.libます。Python 開発者ガイドを参照してください
于 2013-09-24T15:13:52.890 に答える
1

含む:

  #include <python.h>

ブーストには python API が含まれていません... python27.lib でブーストをビルドする必要があります

于 2013-09-23T17:47:37.680 に答える