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

 2023-07-17  阅读 657  评论 0

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

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′

更多扩展内容待总结。

版权声明:xxxxxxxxx;

原文链接:https://www.fanque.com.cn/aac1dA24LB1JUAQ.html

发表评论:

管理员

  • 内容144525
  • 积分0
  • 金币0
关于我们
l番茄知识网是实用的健康养生科普知识及日常生活保健小常识大全网站,分享春夏秋冬四季健康饮食养生保健小知识、运动对健康的好处、中医养生食疗做法等健康的生活方式及养生之道,学习健康养生百科知识尽在番茄健康养生知识网。
快捷菜单
健康养生知识
联系方式
电话:
地址:
Email:admin@qq.com
注册登录
注册帐号
登录帐号

Copyright © 2022 番茄知识网 Inc. 保留所有权利。 Powered by

页面耗时0.1517秒, 内存占用1.84 MB, 访问数据库18次

鄂ICP备2022009988号-2

  • 我要关灯
    我要开灯
  • 客户电话
    807220904

    工作时间:8:00-18:00

    客服电话

    电子邮件

    admin@qq.com

  • 官方微信

    扫码二维码

    获取最新动态

  • 返回顶部