python调用C++DLL

DLL文件的生成与调用

准备c++编辑器(vs2019)和python编辑器(pycharm)

C++生成DLL

创建一个项目,windows桌面向导——应用类程序选择动态链接库dll(空项目)
新建一个dlltest.h和dlltest.cpp

头文件中写入:


主要是声明函数。其中extern "C"表示生成dll时采用c来编译,必须要加,如果不加,生成的dll文件函数名会乱码而导致无法调用。
__declspec(dllexport):要想调用dll中的函数,必须导出相应的函数接口
__DECLSPEC:预处理器定义,在项目属性c/c++中预处理器中添加定义,当有两个宏定义要选择用哪个时使用。这个是简便写法,也可以一步步通过宏定义即可。
在这里插入图片描述
_stdcall:Windows API默认函数调用协议,好处是不同的编译器都能调用,因为都是调用的WINAPI。
如果程序中没有可变参数的函数,尽量使用_stdcall协议。(_cdecl通常用于可变参数函数,是c/c++的函数调用协议)

源文件写入

在这里插入图片描述
定义函数

最后项目生成一下(注意这边解决方案配置为debug x64)
此时会在项目文件下就生成了DLL文件,路径:…/x64/Debug/dlltest.dll

Python调用DLL文件

1、创建一个.py文件,将DLL文件复制到.py文件目录下
2、python调用dll要用到ctypes库,所以要安装ctypes库,pip安装即可
3、调用代码
在这里插入图片描述
os:os库用来找寻并提供dll文件的路径
WinDLL:导入DLL文件使用WinDLL(路径)/windll.LoadLibrary(路径)
这里导入DLL文件还有另一种方法:CDLL(路径)/cdll.LoadLibrary(路径)
这两种方法的区别与函数的调用协议有关,上文提到的_stdcall和_cdecl,由于c++中使用的是_stdcall,所以我们这里用windll导入DLL文件。
调用函数:有了dll对象就可以直接调用里面的函数了。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值