linux C++调用python生成的执行文件pybind11
时间: 2023-12-11 20:02:26 浏览: 154
可以使用pybind11库将Python代码转换为C++可调用的动态链接库,然后在C++程序中调用该动态链接库。下面是一个简单的示例:
1. 编写Python代码
```python
# hello.py
def say_hello(name):
print("Hello, ", name)
```
2. 使用pybind11将Python代码转换为动态链接库
```c++
// main.cpp
#include <pybind11/embed.h> // pybind11头文件
#include <iostream>
namespace py = pybind11;
int main() {
py::scoped_interpreter guard{}; // 初始化Python解释器
py::module hello = py::module::import("hello"); // 导入Python模块
hello.attr("say_hello")("world"); // 调用Python函数
return 0;
}
```
编译链接:
```
$ g++ -std=c++11 -I<path/to/pybind11> main.cpp -lpython3.7m -o main
```
其中,`<path/to/pybind11>`是pybind11库的安装路径,`-lpython3.7m`是Python解释器的链接库。
3. 运行C++程序
```
$ ./main
Hello, world
```
这样,就可以在C++程序中调用Python代码了。需要注意的是,pybind11只支持Python 3.x版本。如果你的Python版本不是3.x,需要相应地修改链接库名称。
阅读全文