运行dll文件的 *** 如何打开dll文件代码
Python 项目中有时会兼顾执行效率和功能隐藏的需求,调用dll是个很好的选择 。本文介绍一下Python调用dll的 *** ,供大家参考 。
开发工具:Visual Studio 2017,Pycharm
开发框架:C++ dll开发用MFC;Pycharm python项目
本文主要内容:
- C++编写dll的主要功能实现;
- python 调用dll的实现 *** ;
- Python调用dll *** 的总结 。
创建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文件代码】更多扩展内容待总结 。
推荐阅读
- 转换mts格式的视频文件的 *** mts格式转换软件
- 系统更新导致电脑黑屏 电脑文件传输软件有哪些
- 家用小型粉碎机推荐 文件粉碎器怎么用
- 一键清理空间清除垃圾 c盘清理bat文件
- 基于android的app开发 android文件存储方式
- procreate导出源文件 后缀是ai是什么格式
- 系统备份文件格式分析 dxf是什么文件格式
- 合肥文件柜生产厂家哪个好
- 文件柜尺寸是多少
- 广州文件柜厂家有哪些