python 项目中有时会兼顾执行效率和功能隐藏的需求,调用dll是个很好的选择。python教程分享如何打开dll文件代码(运行dll文件的方法)介绍一下python调用dll的方法,供大家参考。
开发工具:visual studio 2017,pycharm
开发框架:c++ dll开发用mfc;pycharm python项目
python教程分享如何打开dll文件代码(运行dll文件的方法)主要内容:
- c++编写dll的主要功能实现;
- python 调用dll的实现方法;
- python调用dll方法的总结。
1.c++编写dll接口
step1 创建mfc 动态链接库 应用程序
创建mfc 动态链接库 应用程序
step2 查看工程结构并编译生成dll 文件
查看工程结构并编译生成dll 文件
step3 添加接口函数并编译生成dll
添加接口函数,在cpp 文件中添加接口,形式如下,extern “c” __declspec(dllexport) +返回类型 +接口函数名称+(参数1,参数2 …)
//带参数和返回值的接口 extern"c" __declspec(dllexport) int add(int a, int b) { return a + b; } //带参数的接口 extern"c" __declspec(dllexport) void showtips(char* tips) { afxmessagebox(tips); } //对话框接口函数调用 extern"c" __declspec(dllexport) void testdialog(char* tips) { afx_manage_state(afxgetstaticmodulestate()); cdialoga* dlg = new cdialoga(null, tips); dlg->domodal(); }
更多c++创建dll的方法可参考前面总结的c# 调用dll接口功能实现
2.python 调用dll
2.1加载dll
dllpath = "./dlltest.dll" pdll=ctypes.windll(dllpath) print (pdll)
加载dll
2.2 调用带参数和返回值的接口
调用add接口
2.3 调用带字符串参数的接口
#c++ 接口 原型:extern"c" __declspec(dllexport) void showtips(char* tips) shpwtips = pdll.showtips #设置输入参数类型 shpwtips.argtypes = [ctypes.pointer(ctypes.c_char)] #传参 字符串需要转换 str1 = (ctypes.c_char * 256)(*bytes("hello python call dll!", 'mbcs')) #调用函数 shpwtips(str1)
调用带字符串参数的接口
2.4 调用对话框接口并传参
#3 调用对话框接口 #extern"c" __declspec(dllexport) void testdialog(char* tips) shpwdialog = pdll.testdialog #设置输入参数类型 shpwdialog.argtypes = [ctypes.pointer(ctypes.c_char)] #传参 str1 = (ctypes.c_char * 256)(*bytes("hello python call dll dialog!", 'mbcs')) #调用函数 shpwdialog(str1)
调用对话框接口并传参
传入参数
调用显示dll对话框
3.总结
python教程分享如何打开dll文件代码(运行dll文件的方法)总结了python调用dll的最基本的实现方法,仅供参考。总结一下python教程分享如何打开dll文件代码(运行dll文件的方法)的要点:
1)实现python 调用带参数和返回值的接口
2)实现python调用带参数不带返回值的接口
3)实现python调用带参数的 对话框接口
4)功能实现需要在类接口中完成,python只负责调用,不负责实现;
5)接口函数如果带参数,需要设置argtypes 类型,参数个数和类型与实际值保持一致(shpwtips.argtypes = [ctypes.pointer(ctypes.c_char)]]);
6)调用接口之前,字符串参数本身也需要进行转换(str1 = (ctypes.c_char * 256)(*bytes(“hello python call dll dialog!”, ‘mbcs’))))
7)编码方式,如果c++ dll 是多字节 编码的,用’mbcs’ ;如果是unicode 编码的,用’utf-8′
更多扩展内容待总结。
需要了解更多python教程分享如何打开dll文件代码(运行dll文件的方法),都可以关注python教程分享栏目—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/pythontutorial/1053103.html