python 调c++生成的dll 中识别char *_实现python调用C++函数(windows 、python3 、vs2017)

以python调用c++编写的参数化代码为例

0.配置vs环境 (参考末尾链接):添加包含目录、库目录等,并使用#include <Python.h>

1.编写需要调用的函数,如void parametorizer_disk(char* FilePath, char* savepath);

2.包裹函数Wrap。负责将Python的参数转化为C的参数(PyArg_ParseTuple),调用实际的parametorizer_disk,并处理parametorizer_disk的返回值,最终返回给Python环境。如图:

236a68d723ffbab89e52d40e8ed49588.png

3.导出表test_methods。负责告诉Python这个模块里有哪些函数可以被Python调用。导出表的名字可以随便起,每一项有4个参数:

第一个参数是提供给Python环境的函数名称;

第二个参数是_great_function,即包裹函数;

第三个参数的含义是参数变长;

第四个参数是一个说明性的字符串。

导出表总是以{NULL, NULL, 0, NULL}结束。

如图:

b5b63060f347056a410888654014ca20.png

4.(Python 3.x中不再使用Py_InitModule。现在,创建一个 PyModuleDef结构,然后将引用传递给 PyModule_Create。)

d5c92e70919f579a3a5e91d3baa900a3.png

5.生成.pyd文件

a. 右键项目,生成。

b. 找到生成的.dll文件,将其后缀更改为.pyd

e1cd8648bf2490cf6d348848d46a4917.png

c. 将该.pyd文件移动到.py目录中,可以在.py中直接import该文件

10c0f2c8077a0b447139045473fbbf04.png

参考链接:Windows下Python3调用C++函数_KunBB的博客-CSDN博客

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值