Pythonインタープリター(pybind11)が埋め込まれたCPPファイルをビルドして実行する方法

ザック・リー

pybind11を使用して、Pythonインタープリターが埋め込まれたCPPファイルをビルドして実行する方法を見つけようとしています。

このチュートリアルから、CMakeを使用していますが、CMakeなしでこれを行う方法を探しています。

これが私が試したことです。

ではexample.cpp:

#include <pybind11/embed.h> // everything needed for embedding
namespace py = pybind11;

int main() {
    py::scoped_interpreter guard{}; // start the interpreter and keep it alive

    py::print("Hello, World!"); // use the Python API
}

そして、私が以下を実行すると、ターミナルで:(正常にビルドされます)

c++ -O3 -Wall -std=c++11 -undefined dynamic_lookup `python3 -m pybind11 --includes` example.cpp -o example

そして、バイナリを実行します

./example

次のエラーが発生します。

dyld:シンボルが見つかりません:_PyBaseObject_Type参照元:/ Users / cuinjune / Desktop / pybindtest /./ example予期される場所:/ Users / cuinjune / Desktop / pybindtest /./ exampleのフラット名前空間zsh:abort ./example

pybind11を使用して、埋め込まれたPythonインタープリターでcppファイルを適切にビルドして実行する方法はありますか?(CMakeを使用せずに)

Wim Lavrijsen

そのシンボル(および必要なもの)を定義するPythonライブラリとリンクします。

標準インストールを想定すると、それは追加するだけです。

`-lpython`

CLIに(または-lpython3、システムに複数のPythonライブラリが存在する場合など)。代わりに次を追加することもできます。

`python3-config --libs`

Python3がpython3-configインストールされいる場合

編集:コメントに基づいて、関連するライブラリディレクトリはセットアップのリンカで利用できません。1つのオプションは、代わりにフラグの完全なセットを使用することです。

`python3-config --ldflags`

私はまだそれがpython3-configあなた一致すると仮定していますpython3そうでない場合、代替手段はディレクトリdistutilsを取得することです。インストールの前に-L追加て追加する-lpython-lpython3、インストールに応じて:

-L`python3 -c 'import distutils.sysconfig as ds; print(ds.get_config_var("LIBDIR"))'` -lpython

(もちろん、「LDFLAGS」config_varもありますが、これらはPythonを構築するためのフラグであり、必要なものではない可能性があります。)

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

pybind11を使用したマルチスレッドC ++プログラムへのPythonインタープリターの埋め込み

分類Dev

pybind11を使用してvirtualenvからPythonインタープリターを実行する方法は?

分類Dev

pybind11を使用して、既存の埋め込みPythonインタープリターでC ++機能を公開する

分類Dev

インラインまたは埋め込まれた JSON ファイル データを取得する方法

分類Dev

YAMLファイルに埋め込まれたPythonコードを実行します

分類Dev

スライドの特定の場所でPythonを使用してExcelファイルを埋め込みデータをPowerPointにリンクする方法

分類Dev

pybind11、cmake:ファイルをインストールする方法は?

分類Dev

埋め込まれたメタデータを使用して、ビデオ録画のファイルタイムスタンプを復元するにはどうすればよいですか?

分類Dev

埋め込まれたメタデータを使用して、ビデオ録画のファイルタイムスタンプを復元するにはどうすればよいですか?

分類Dev

LLVMツールを使用してバイナリデータを実行可能ファイルに埋め込む

分類Dev

リポジトリに.shファイルとしてすでに含まれているイメージをビルドするためのスクリプトを実行するように.travis.ymlファイルを構成する方法

分類Dev

埋め込まれたPDFファイルをダウンロードする

分類Dev

_init__.pyファイルが埋め込まれたモジュールをインストールしてロードします

分類Dev

Pybind11:Pythonインタープリターで* .pydをインポートしようとすると、「ImportError:DLLが見つかりません」

分類Dev

webplayerを使用して埋め込まれているunity3dアプリケーションにファイルをロードする

分類Dev

PowerShellにWinSCPをロードしています-ファイルまたはアセンブリを読み込めませんでした-このアセンブリは、現在ロードされているランタイムよりも新しいランタイムによってビルドされています

分類Dev

埋め込まれたPythonインタープリターが外部モジュールを2回インポートしようとすると、C ++アプリケーションがクラッシュします

分類Dev

Java:依存するjarが埋め込まれたjar実行可能ファイルを作成します

分類Dev

pybind11からビルドされたモジュールをインポートすると、エラー「セグメンテーション違反(コアダンプ)」が発生します

分類Dev

MailChimpフォームが埋め込まれた同じ行にメールフィールドと送信ボタンを取得する方法

分類Dev

データはローカルのjsonファイルを介して埋め込まれています

分類Dev

プレビューでPDFファイルに埋め込まれたフォントのリストを表示

分類Dev

pybind11またはPythonCAPIを使用してASTをコンパイルして実行します

分類Dev

埋め込みファイル(インクルード)をカスタムRmarkdownに保存する方法

分類Dev

キューシートが埋め込まれたflacファイルをサポートしているプレーヤーはどれですか?

分類Dev

キーと値のペアの配列が埋め込まれているPyMongoドキュメントの値(リアルタイム)を取得する方法

分類Dev

埋め込まれたPythonインタープリターに行番号を渡す

分類Dev

PHPコードを「コンパイル」して、バイトコードインタープリターによって実行されるバイナリ風のファイルをアップロードできますか?

分類Dev

ffmpegを使用して、カバーが埋め込まれたファイルからビデオカバー/サムネイルを抽出します

Related 関連記事

  1. 1

    pybind11を使用したマルチスレッドC ++プログラムへのPythonインタープリターの埋め込み

  2. 2

    pybind11を使用してvirtualenvからPythonインタープリターを実行する方法は?

  3. 3

    pybind11を使用して、既存の埋め込みPythonインタープリターでC ++機能を公開する

  4. 4

    インラインまたは埋め込まれた JSON ファイル データを取得する方法

  5. 5

    YAMLファイルに埋め込まれたPythonコードを実行します

  6. 6

    スライドの特定の場所でPythonを使用してExcelファイルを埋め込みデータをPowerPointにリンクする方法

  7. 7

    pybind11、cmake:ファイルをインストールする方法は?

  8. 8

    埋め込まれたメタデータを使用して、ビデオ録画のファイルタイムスタンプを復元するにはどうすればよいですか?

  9. 9

    埋め込まれたメタデータを使用して、ビデオ録画のファイルタイムスタンプを復元するにはどうすればよいですか?

  10. 10

    LLVMツールを使用してバイナリデータを実行可能ファイルに埋め込む

  11. 11

    リポジトリに.shファイルとしてすでに含まれているイメージをビルドするためのスクリプトを実行するように.travis.ymlファイルを構成する方法

  12. 12

    埋め込まれたPDFファイルをダウンロードする

  13. 13

    _init__.pyファイルが埋め込まれたモジュールをインストールしてロードします

  14. 14

    Pybind11:Pythonインタープリターで* .pydをインポートしようとすると、「ImportError:DLLが見つかりません」

  15. 15

    webplayerを使用して埋め込まれているunity3dアプリケーションにファイルをロードする

  16. 16

    PowerShellにWinSCPをロードしています-ファイルまたはアセンブリを読み込めませんでした-このアセンブリは、現在ロードされているランタイムよりも新しいランタイムによってビルドされています

  17. 17

    埋め込まれたPythonインタープリターが外部モジュールを2回インポートしようとすると、C ++アプリケーションがクラッシュします

  18. 18

    Java:依存するjarが埋め込まれたjar実行可能ファイルを作成します

  19. 19

    pybind11からビルドされたモジュールをインポートすると、エラー「セグメンテーション違反(コアダンプ)」が発生します

  20. 20

    MailChimpフォームが埋め込まれた同じ行にメールフィールドと送信ボタンを取得する方法

  21. 21

    データはローカルのjsonファイルを介して埋め込まれています

  22. 22

    プレビューでPDFファイルに埋め込まれたフォントのリストを表示

  23. 23

    pybind11またはPythonCAPIを使用してASTをコンパイルして実行します

  24. 24

    埋め込みファイル(インクルード)をカスタムRmarkdownに保存する方法

  25. 25

    キューシートが埋め込まれたflacファイルをサポートしているプレーヤーはどれですか?

  26. 26

    キーと値のペアの配列が埋め込まれているPyMongoドキュメントの値(リアルタイム)を取得する方法

  27. 27

    埋め込まれたPythonインタープリターに行番号を渡す

  28. 28

    PHPコードを「コンパイル」して、バイトコードインタープリターによって実行されるバイナリ風のファイルをアップロードできますか?

  29. 29

    ffmpegを使用して、カバーが埋め込まれたファイルからビデオカバー/サムネイルを抽出します

ホットタグ

アーカイブ