pybind11封装c++库(一)

        pybind11 是一个轻量级的库,用于将 C++ 代码绑定到 Python。它支持现代 C++11 标准,生成的绑定代码非常高效。

安装:

pip install pybind11

编写c++代码

#include <pybind11/pybind11.h>

namespace py = pybind11;

int add(int a, int b) {
    return a + b;
}

PYBIND11_MODULE(testpy, m) {
    m.def("add", &add, "A function that adds two numbers");
}

编写CMakeLists.txt

cmake_minimum_required(VERSION 3.4)
project(your_module_name)

# 找到 pybind11  (D:/Program Files/python3/Lib/site-packages/pybind11 替换成环境下的实际pybind11包路径)
set(pybind11_DIR "D:/Program Files/python3/Lib/site-packages/pybind11/share/cmake/pybind11")
find_package(pybind11 REQUIRED)

# 设置 Python 库和头文件路径  (D:/Program Files/python3 替换成环境下的实际Python安装路径)
set(PYTHON_LIBRARY "D:/Program Files/python3/lib")
set(PYTHON_INCLUDE_DIR "D:/Program Files/python3/include")

# 添加模块
pybind11_add_module(your_module_name *.cpp)

# 设置输出目录和文件名
set_target_properties(your_module_name PROPERTIES
    LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/python_modules
    SUFFIX ".pyd"
    OUTPUT_NAME "your_module_name"
)

if(WIN32)
    target_link_libraries(your_module_name PRIVATE pybind11::module)
endif()

项目结构

project/
├── CMakeLists.txt
├── test.cpp

生成Python module  

mkdir build
cd build
cmake ..
make
# 没有装make执行下面命令
# cmake --build . --config Release

把生成的pyd文件拷贝到Python安装包的路径下,即python3/Lib/site-packages/testpy下。

在Python中使用

import sys
sys.path.append('D:/Program Files/python3/Lib/site-packages/testpy')
import testpy
result = testpy.add(3, 4)
print(result)  # 输出:7

sys.path.append 把拷贝的路径添加到系统路径。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值