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

python生成动态库在c++中调用

一.Windows下生成动态库.pyd

在setup.py的同目录下使用python setup.py build_ext --inplace

二.在vscode的c++中使用.pyd文件(动态库)

1)配置python的环境

python -c "import sys; print(sys.executable)" #确定python安装位置

2)修改vscode中python的链接关系

2.1)修改tasks.json

2.2)修改launch.json

3)对应的vscode代码:

#include <iostream>
#include <Python.h>
using namespace std;int main() {Py_SetPythonHome(L"D:\\Conda\\envs\\yolo");  // 设置 Python 解释器路径Py_Initialize();  // 初始化 Python 解释器// 添加 .pyd 所在路径到 sys.path//E:\Code\VScode\Project_test\mymodule.cp39-win_amd64.pydPyRun_SimpleString("import sys");PyRun_SimpleString("sys.path.append('E:\\Code\\VScode\\Project_test')");// 导入 .pyd 模块PyObject* pModule = PyImport_ImportModule("mymodule");  // 不带 .pyd 后缀if (!pModule) {PyErr_Print();std::cerr << "Failed to load module\n";return 1;}// 获取函数PyObject* pFunc = PyObject_GetAttrString(pModule, "add");  // 函数名if (PyCallable_Check(pFunc)) {PyObject* pArgs = PyTuple_Pack(2, PyLong_FromLong(10), PyLong_FromLong(32)); //传入两个参数10,32.相加为42PyObject* pValue = PyObject_CallObject(pFunc, pArgs);long result = PyLong_AsLong(pValue);std::cout << "Result from Python: " << result << std::endl;Py_XDECREF(pValue);Py_DECREF(pArgs);} else {PyErr_Print();std::cerr << "Function not callable\n";}Py_XDECREF(pFunc);Py_DECREF(pModule);Py_Finalize();  // 关闭解释器cout<<"hello world";return 0;
}

4)结果:

http://www.dtcms.com/a/147791.html

相关文章:

  • 基于Spring Boot实现文件秒传的完整方案
  • Hibernate的组件映射
  • RPA系统应用通用文字识别技术,推动 RPA 在各个领域的广泛应用和发展
  • 信奥中的数学
  • 进程与线程:03 用户级线程
  • 系分论文《论数据中台建设的分析和应用》
  • HADOOP 3.4.1安装和搭建(尚硅谷版~)
  • uv运行一个MCP Server的完整流程
  • XAttention
  • 人工智能100问☞第9问:什么是AI芯片?
  • 基于SpringBoot的高校体育馆场地预约管理系统-项目分享
  • 理性决策与情绪偏差
  • 永磁同步电机参数辨识算法--递推最小二乘法辨识
  • 让专业更轻盈,让启蒙更智能——特伦斯便携钢琴V30Pro
  • Stable Diffusion 制作角色三视图
  • HXBC编译相关错误
  • 深度学习:人工智能的核心驱动力
  • 影刀RPA - 简单易用且功能强大的自动化工具
  • wkhtmltopdf - HTML转PDF/图像命令行工具
  • CSS字体
  • 爬虫学习——Item封装数据与Item Pipeline处理数据
  • 基于 Vue,使用Vuex 或事件总线实现跨组件通信
  • Discuz!与DeepSeek结合:打造智能论坛,提升用户体验与运营效率
  • Go语言中的Context
  • 模拟车辆变道 python 可视化
  • MCP实践第一步--磕磕碰碰搭环境
  • Precision Machine Dynamics/Mechatronics Design - 6
  • 20242817李臻《Linux⾼级编程实践》第8周
  • 精准评估机器学习模型:从混淆矩阵到核心指标的深度解析+面试常见问题及解析(看这篇就够了)
  • Emacs入门篇2:安装evil插件以便vi老用户可以使用VI快捷键来快速使用Emacs