2017-08-14 15 views
0

Visual StudioにBoost Pythonをインストールしようとしていますが、結果はほとんど得られていません。私はBoost.Pythonライブラリを作成することができました。boost_python ... libファイルも作成されています。Boost Pythonがdllファイルを見つけられない

しかし、今、Visual Studioで、リンカに含めるとライブラリのパスを追加した後、私は仕事に小さなテストプログラムを入手することができませんでした。

次のコード行を実行しようとしている:

Py_Initialize(); 
using namespace boost::python; 
object main_module((handle<>(borrowed(PyImport_AddModule("__main__"))))); 

boost_python-vc141-1_65.dllが欠落しているので、私は

は、プログラムが開始できませんでした次のエラーを取得していますが....

私がブーストフォルダを見ると、ライブラリがどこにあるか(ステージフォルダ内)私はこのファイルをはっきりと見ることができ、私はこのフォルダに対してプログラムをリンクしています。

私は様々な異なるBoostバージョンを試しました。

最新の安定ビルドので1.64はベータ版1.65と同じ問題を抱えています。以前のビルド1.61では、Boost.Pythonをビルドすることさえできませんでした。

私はまた、異なるPythonのバージョン、3.6と今2.7を試してみました。私はPythonの他のすべてのバージョンをアンインストールして、2.7バージョンのみをインストールしました。また、PYTHONHOMEとPYTHONPATHがシステム変数に設定されていることを確認しました。 ? このBoost Pythonライブラリを動作させるには何か重要なものがありませんか?他の情報が必要な場合は質問してください。私はそれを追加しますが、一般的には私がよく知らないので、どのような情報が適切かはわかりません。 Windowsでは

答えて

2

そこは/ usr /共有ディレクトリではありませんので、ビルドスクリプトは皆のためのDLLライブラリをインストールすることはできません後押し。だからあなたは自分で仕事をすることになっています。

あなたのdllファイルは、あなたのexeファイルと同じディレクトリにある必要があります。 boostをコンパイルすると、boost出力dir(このファイルを検索)にdllライブラリが作成されました。したがって、この* .dllファイルを出力ディレクトリ(C++コンパイラ/リンカが* .exeを作成する場所)にコピーする必要があります。

SafeDllSearchModeが有効になっている場合は、次のように、検索順序は次のとおりです。

  • アプリケーションがロードされたディレクトリ。
  • システムディレクトリ。このディレクトリのパスを取得するには、GetSystemDirectory関数を使用します。
  • 16ビットのシステムディレクトリ。このディレクトリのパスを取得する機能はありませんが、検索されます。
  • Windowsディレクトリ。このディレクトリのパスを取得するには、GetWindowsDirectory関数を使用します。
  • 現在のディレクトリ。
  • PATH環境変数にリストされているディレクトリ。これには、アプリケーションパスのレジストリキーで指定されたアプリケーションごとのパス は含まれません。 App Pathsキーは、DLL検索パスを計算するときに使用される ではありません。

SafeDllSearchModeが無効になっている場合は、次のように、検索順序は次のとおりです。

  • アプリケーションがロードされたディレクトリ。
  • 現在のディレクトリ。
  • システムディレクトリ。このディレクトリのパスを取得するには、GetSystemDirectory関数を使用します。
  • 16ビットのシステムディレクトリ。このディレクトリのパスを取得する機能はありませんが、検索されます。
  • Windowsディレクトリ。このディレクトリのパスを取得するには、GetWindowsDirectory関数を使用します。
  • PATH環境変数にリストされているディレクトリ。これには、
  • App Pathsレジストリキーで指定されたアプリケーションごとのパスは含まれません。 DLL検索パスを計算する場合、App Pathsキーは使用されません。だから、

Taken from here

+0

私は* .exeファイルは、私は問題ないはずです同じディレクトリに* .dllファイルをコピー&ペーストしたら?あるいは、「カスタムビルドステップ」とはどういう意味ですか? –

+0

はい、それはうまくいくはずですが、プロのプログラマーのキャリアを考えると、ビルドプロセスは自動的に行われるはずです。これを自動化するために、カスタムビルドステップとして "copy"コマンドを追加することができます。しかし、他のオプションがあります。 –

+0

私はあなたを愛しています。私は* .dllファイルの取り扱いについて調査しました。 * .dllファイルをターゲットディレクトリにコピーするポストビルドスクリプトを作成しました –

関連する問題