python编程(python调用dll程序)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】
很多人说python的效率比较低,主要是没有分清什么时候用python、什么时候用c。对于网络、gui或者业务层面的代码,用python是完全可以的。但是对于算法、演算或者性能相关的逻辑,必须用c或者c++实现。因此回到windows平台,学会用python调用dll程序,是十分有必要的。用python调用dll不复杂,做好这几步就可以了,
1、创建一个dll工程
就按照vs2017的要求,“新建”-》“项目”-》“Visual C++”-》“Windows 桌面”-》“动态链接库”,一步一步创建工程即可
2、添加额外的函数代码
extern "C"
{_declspec (dllexport) int add(int a, int b){return a + b;}_declspec (dllexport) int sub(int a, int b){return a - b;}
}
3、编译工程,检验是否生成dll文件
选择项目,右击,选择“重新生成解决方案”
4、开始编写python代码
import ctypes
lib=ctypes.cdll.LoadLibrary("Dll1.dll")
5、验证是否可以使用add函数、sub函数
print lib.add(1,2)
print lib.sub(1.2)
6、可以试试还没有实现的函数,会不会出现调用异常
比如print lib.mul(1,2)
7、继续测试,数据类型不一致是否发生异常
比如print lib.add(1.1, 2.2)
8、验证句柄信息是否正确
比如print lib
9、数据传递
目前python里面整数、字符串都是可以传递给c程序的
如果是复杂一点的数据结构,建议直接用字符串组装传递进去,c程序收到后用sscanf解析
反过来,如果c的结果传给python,一般函数的返回值可以传递出来的,因此是字符串的话,可以通过多次调用函数获取返回值的方法来解决
10、其他
如果是发布给客户的应用程序,最好是用pyinstaller封装下,再加上必要的资源文件、dll文件、config配置文件,这样就可以了
注1:
如果c和python之间只是简单的数据传输,那么整数和字符串就可以了
一旦不是简单的数据,那么最好使用python原生的api,这样处理的效率更高点
注2:
注意使用ctypes库
https://docs.python.org/zh-cn/3.7/library/ctypes.html
python编程(python调用dll程序)相关推荐
- Python 编程无师自通:专业程序员的养成
Python 编程无师自通:专业程序员的养成 扫码 · 试读 在学习中拉开技术差距
- Python——Python编程方法与应用——程序示例
Python--Python编程方法与应用--程序示例 例1-1 根据圆的半径计算圆的周长和面积 #ex0101.py # 计算圆形的面积和周长 r = 3.2 area = 3.14*r*r per ...
- C/C++:Windows编程—调用DLL程序的2种方法
前言 先简单介绍下DLL.DLL:Dynamic Link Library 动态链接库 是一个被其他应用程序调用的程序模块,其中封装了可以被调用的资源或函数.DLL 文件属于可执行文件,它符合Wind ...
- GUI的演化和python编程——Python学习笔记之二十二
GUI的演化和python编程--Python学习笔记之二十二 写完了有关长寿的两篇博文,本该去完成哥德尔那个命题六的.对计算机图形界面的好奇,让我把注意力暂时离开那个高度抽象难读的哥德尔,给转到计算 ...
- 非线性规划的拉格朗日乘子法python编程python包编程
非线性规划的拉格朗日乘子法&python编程&python包编程 一.拉格朗日乘子法 1.1 拉格朗日乘子法定义 1.2 KKT条件定义 1.3 拉格朗日乘子法手工推导例题 二.Pyt ...
- python编程在哪里写程序-教你如何编写、保存与运行Python程序的方法
第一步 接下来我们将看见如何在 Python 中运行一个传统的"Hello World"程序.Python教程本章将会教你如何编写.保存与运行 Python 程序. 通过 Pyth ...
- 了解Python编程——Python学习(一)
目录 一.对Python程序的了解 二.认识Python家族 三.Python的数据类型组成 四.程序中出现率最高的if-else 一.对Python程序的了解 Python是什么 Python,与C ...
- 孩子有必要学python编程,python编程小学生学好吗
孩子学python有用吗 山东省在其最新出版的小学信息技术六年级教材中,加入了 Python 的内容,小学生都开始学 Python ,后生可畏. 浙江省新高中信息技术教材改革项目中,高中新生开始使用新 ...
- 怎样学好python编程-Python编程怎么学习好?老男孩Python入门
怎么学习Python编程呢?Python是一门计算机编程语言,同时也是一门入行IT行业的首先语言,学习一门新技术最重要的就是去掌握学习方法,对于Python学习来说,对于新手来说相对于是非常简单的,而 ...
最新文章
- php播放音乐视频,html5停止(暂停)当前播放的音频或视频的方法pause()
- SQL与NoSQL区别
- 一些SqlServer常见和入门操作2
- Algs4-1.4.8计算输入文件中相等的整数对的数量
- C++网络编程快速入门(一):TCP网络通信基本流程以及基础函数使用
- 网页字体设置你了解吗?
- python实现录音小程序 界面_小程序如何实现录音 播放功能
- linux中查看和开放端口
- rmd文件怎么转换html文件,如何将Rmd文件的html输出向左对齐
- 小程序模仿蚂蚁森林浇水demo,树木浇水
- vue 强制清除浏览器缓存
- L2 Switching
- 微信小程登录功能和获取手机号
- 删除flash助手推荐广告
- Origin中画折线图实现双X轴和双Y轴(双坐标轴)
- 如何在电脑中安装虚拟机?
- JFreeChart饼图, java程序中加载宋体字库
- latex—中文目录乱码
- 主机坏了,150能解决的问题我花了近8000
- 电子计算机是汉字的掘墓人,当人类社会进入到信息时代,曾有人_______,计算机是方块汉字的掘墓人。然 - 问答库...
热门文章
- Heartbeat(v1、v2、pacemaker)集群组件概述
- oracle 11g 存储结构和数据文件
- Logstash+elasticsearch+elastic+nignx
- KETTLE6.0版本体验小结
- php之防注入程序绕过浅谈
- nginx多域名设置和多子目录实现共用一端口
- mac ipmessage
- struct、union、enum and sizeof
- Android开发2:事件处理及实现简单的对话框(Toast,AlertDialog,Snackbar,TextInputLayout的使用)...
- Appium+Python API相关知识了解