使用python调用DLL文件
最近要用python调用dll,在网上找了很多帖子,通常都说能用,但是自己去试的时候却千难万难,思索思索决定自己也写一下;希望能给各位以帮助。
环境
使用环境为pycharm2021,python3.7,vs2015,C++
调用方法
生成dll文件
生成DLL的详细步骤可以看我前一篇帖子,此处只介绍在有了dll后如何进行调用。
首先用VS2015打开我之前生成的项目,我这个项目写的比较粗糙,也没有类之类的东西。
后期熟练后再来进行更改。此处仅以此不成熟代码为例:
只需要在头文件中定义处加上extern “C” ,如下图,注意空格。
后面的_declspec好像也是关键,但目前还不太懂。
更改此处后,重新点生成>>生成解决方案,得到新的dll文件。
在python中加载
在项目文件夹中找到生成的dll文件,将其拉到python项目文件夹下。
test3.py是我将要使用的python文件,test_dll.dll为我生成的dll文件。
py代码如下
from ctypes import *
dll = cdll.LoadLibrary("test_dll")
print("add:", dll.myAdd(1, 2))
print("Max:", dll.myMax(1, 2))
print("main:", dll.main())
运行结果如下
可以看到,仅在.h文件中声明的函数可调用,上诉代码去掉最后一行则无报错。
我这里的经验是,函数定义在cpp中,但要在.h中使用如上方法后才能被调用,但也有博主只用cpp生成的dll也能被调用,当中声明亦与我不同,我会把他的连接放在最后,大家可以相比较一下。
参考如下
链接: b站up的方法.
链接: python调用C++编译生成的DLL动态链接库.
链接: Python调用windows下DLL详解.