当前位置: 首页 > news >正文

c++打包pyd文件给Python使用调用函数

c++打包pyd文件给Python使用调用函数

C语言源码:

simplemath.cpp代码:

//
// Created by ASFOR on 2025/9/11.
//
#include <pybind11/pybind11.h>namespace py = pybind11;// 一个简单的加法函数
int add(int a, int b) {return a + b;
}// 一个简单的乘法函数
int multiply(int a, int b) {return a * b;
}// 定义 Python 模块
PYBIND11_MODULE(simplemath, m) {m.doc() = "A simple math module written in C++";m.def("add", &add, "Add two numbers");m.def("multiply", &multiply, "Multiply two numbers");
}
CMakeLists.txt代码如下:
cmake_minimum_required(VERSION 3.28)
project(simplemath)set(CMAKE_CXX_STANDARD 17)# pybind11 include 路径
include_directories("E:/Users/29165/AppData/Roaming/Python/Python313/site-packages/pybind11/include")# Python include 和 libs
include_directories("D:/software/Python/Python313/include")
link_directories("D:/software/Python/Python313/libs")# 编译成 Python 扩展模块
add_library(simplemath MODULE simplemath/simplemath.cpp)# Windows 下生成 .pyd 而不是 .dll
set_target_properties(simplemath PROPERTIESPREFIX ""SUFFIX ".pyd"
)# 链接 Python 库
target_link_libraries(simplemath python313)
pyproject.toml代码如下:
[build-system]
requires = ["setuptools", "wheel", "pybind11>=2.6.0"]
build-backend = "setuptools.build_meta"

setup.py代码如下:

from setuptools import setup, Extension
import pybind11ext_modules = [Extension("simplemath",                            # Python 导入模块名["simplemath/simplemath.cpp"],           # C++ 源文件路径include_dirs=[pybind11.get_include()],  # pybind11 头文件language="c++",),
]setup(name="simplemath",version="0.1",author="Your Name",description="A simple C++ extension for Python",ext_modules=ext_modules,zip_safe=False,
)

生成文件夹目录

其中pyd为可执行引用的Python代码。

调用时的代码:

import sys# 添加 .pyd 文件所在目录
sys.path.append(r"E:\Pycharmproject\pythonProject1\pyd")# 导入模块
import simplemath# 调用函数
print(simplemath.add(3, 5))
print(simplemath.multiply(4, 6))


文章转载自:

http://buf4zv1b.jLxLd.cn
http://1eUJjqbr.jLxLd.cn
http://vTnWLoZA.jLxLd.cn
http://I9Gwoq3u.jLxLd.cn
http://Lsd97xgN.jLxLd.cn
http://S0KopBfF.jLxLd.cn
http://JEvwj5dV.jLxLd.cn
http://kwUmWIGJ.jLxLd.cn
http://vdcvta8W.jLxLd.cn
http://8Oyhc5MB.jLxLd.cn
http://AZjJyJFJ.jLxLd.cn
http://6bFeUV00.jLxLd.cn
http://N2w5lRTz.jLxLd.cn
http://wiN4TG8o.jLxLd.cn
http://7QTCh4ap.jLxLd.cn
http://UIURkFpG.jLxLd.cn
http://VsgaUDG2.jLxLd.cn
http://jPDNmBa2.jLxLd.cn
http://wIV3ztRR.jLxLd.cn
http://EISJ2PjT.jLxLd.cn
http://SlQm7IX0.jLxLd.cn
http://1hVZPFTg.jLxLd.cn
http://IitrVsn5.jLxLd.cn
http://E2QWU4VM.jLxLd.cn
http://a1BUp1mJ.jLxLd.cn
http://ltHB39AN.jLxLd.cn
http://fXpMXFMM.jLxLd.cn
http://S4TwE54a.jLxLd.cn
http://BGQghPvg.jLxLd.cn
http://NVSuYmdk.jLxLd.cn
http://www.dtcms.com/a/378935.html

相关文章:

  • 设计模式-适配器备忘录组合迭代器
  • Linux上解决telnet失败问题
  • xtuner安装及微调大模型
  • FlexSPI 传输结构体解析
  • 简单的GIT操作学习记录
  • K8S的dashboard部署与访问
  • css之一个元素可以同时应用多个动画效果
  • STM32之水质浑浊度传感器模块
  • 【Qt】【C++】虚析构函数及 virtual ~Base() = default
  • 马斯克访谈深度解读:机器人、AI芯片与人类文明的未来
  • 深入理解 CMake 脚本片段:文件查找、字符串替换与条件处理
  • Google Ads广告验证全攻略:如何借助动态住宅IP精准投放?
  • Linux防火墙配置指南:限制特定IP访问并允许其他所有流量
  • 使用动态IP 需要注意什么
  • 2025年- H128-Lc205. 同构字符串(哈希表)--Java版
  • 今天我们开始学习iptables防火墙
  • Android逆向学习(十一) IDA动态调试Android so文件
  • 第二篇:排序算法的简单认识【数据结构入门】
  • 嵌入式铁头山羊stm32:一文总结
  • HDFS(Hadoop 分布式文件系统)知识点梳理
  • AI幻觉的罪魁祸首
  • JVM 基础
  • 计算智能的概念和其算法的主要算法类型
  • leetcode25(有效的字母异位词)
  • [Windows] FileOptimizer v17.1.0_一款文件批量压缩工具
  • 淘宝/天猫按图搜索(拍立淘)item_search_img API接口实战指南
  • Java优选算法——二分查找
  • leetcode380:RandomizedSet - O(1)时间插入删除和获取随机元素(数组+哈希表的巧妙结合)
  • 经典蓝牙的 BR(Basic Rate(基础速率))
  • 牛客周赛 Round 108题解