当前位置:首页 > 生活百科

如何打开dll文件代码(运行dll文件的方法)

栏目:生活百科日期:2025-02-23浏览:0

Python 项目中有时会兼顾执行效率和功能隐藏的需求,调用dll是个很好的选择。本文介绍一下Python调用dll的方法,供大家参考。

开发工具:Visual Studio 2017,Pycharm

开发框架:C++ dll开发用MFC;Pycharm python项目

本文主要内容:

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的最基本的实现方法,仅供参考。总结一下本文的要点:

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&′

更多扩展内容待总结。

“如何打开dll文件代码(运行dll文件的方法)” 的相关文章

mos管驱动电流一般多少(大功率mos管驱动电路)

应用于电机控制的MOS电路基本上都是桥式逆变拓扑,而目前有很多专门应用于这种场景的驱动芯片,基本上把最关键的的驱动控制结构集成在了内部,我们只要根据它推荐的外围...

nec笔记本电脑质量怎么样(笔记本电脑配置单及价格)

1月11日就是一年一度的CES消费电子展,下周一就会有一大波新机发布。而1月7日,联想NEC已经在展会前发布了新的“掌机+翻转屏迷你笔记本”LaVieMini。...

农村如何找项目创业,8个适合农村真实靠谱的创业项目

现在的农村可比之前强不少,很多人都想回乡创业,既然如此,那农村创业项目给推荐几个,有什么比较好的没,其实,农村的创业项目不少,相必也经常看到某某今年又赚了多少的...

dos界面怎么进入(win7开机自动进入dos模式)

图形用户界面,也称为GUI,已经改变了人们与计算机交互的方式,使其对私人用户具有吸引力。如今,计算机上的大多数任务都可以使用鼠标来完成——从打开程序到更改设置。...

三年述职报告怎么写 (2020个人工作述职报告范文5篇)

第一部分:述职报告市XX局领导班子述职述责述廉报告市X局党组党风廉政建设述职述责述廉报告2018年党风廉政建设工作情况报告2018年意识形态工作情况报告2018...

乔致庸和江雪瑛的结局(一文解读两人剧终结果)

《乔家大院》剧集刚开始乔致庸自信满满的去赶考,偷偷带着江雪瑛,两个人看皮影逛夜市。乔致庸和江雪瑛是青梅竹马的表兄妹,感情甚笃,可是乔家的一场变故使爱好诗书的乔致...

hosts地址怎么改(服务器hosts文件位置)

Hosts文件在哪里呢?windows中的Hosts文件路径位置都相同一样的,并且hosts文件位置在Windows系统安装目录,通常情况是隐藏的,其位置为:C...

台式电脑开机了显示器无信号(无信号原因及解决方法)

引导后无信号显示失败的解决方法:1、数据线特性不好,或与显卡、显示器接触不近。检查电脑的外部接线是否连接好,接线接触不好也会导致开机后显示无信号故障的发生。拔插...

excel二维表转一维表快捷键(怎么把数据转换成统一格式)

将二维表转换成一维表的目的是使数据更加规范,方便后期的统计分析工作。二维表与一维表的区别可以从表格标题字段上看出来,二维表中部分标题字段属性是相同的,而一维表中...

win7密钥激活软件用哪个好(windows7激活码免费领取)

那么今天就来分享分享这个好工具:可能很多网友又会说了,激活工具还不简单吗?网上下载哦,看下图,这个就是某粉丝跟我留言说的情况,聊天截图为证:还有我在实际的激活中...