Pybind11はPythonがC ++を呼び出し、vs2019のHelloWorldの中で書かれたPythonの拡張機能を導入するための最も便利なツールであると考えられて
1.ダウンロードするpybind11
https://github.com/pybind/pybind11/releases/tag/v2.3.0
限り、このライブラリとしてそれに含ま
2.対新しい空のプロジェクトを作成します。
2.1出力タイプDLLを調整し、出力ファイル名はPYDで調整
2.2私はPythonのアナコンダの家族のバケットを使用し、Pythonとpybind11ヘッダファイルをインクルード
2.3リンクのpythonのlib
Pythonのlibに2.4リンカ
3.コード例:
関数定義された2つの方法で、一方が他方よりシンプルでデフ(「機能」、および引用機能、「説明」)で、直接定義されるがあります。
ほとんどのC ++コードを変更することなく、非常に単純なPybind、
#include <pybind11/pybind11.h> namespace py = pybind11; int chufa(int a, int b) { return a / b; } PYBIND11_MODULE(example, m) { m.doc() = "...."; m.def("foo", []() { return "Hello world!"; }); m.def("chufa", &chufa, "just chufa"); }
4. build 得到pyd文件
在python中直接import就可以了...
5. 坑:
1. 要注意编译出来的是64位还是32位的包, 建议全部在64位下编译, 否则可能会报错:
ImportError: DLL load failed: %1 is not a valid Win32 application. But the DLL's are there
2. pyd的文件名要和包名一致, 如果输出的pyd文件名称不对需要手动改过来, 否则会报错误:
ImportError: dynamic module does not define module export function