4

python编程(python调用dll程序)

 3 years ago
source link: https://feixiaoxing.blog.csdn.net/article/details/112687722
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

python编程(python调用dll程序)

费晓行 2021-01-15 21:35:43 39
分类专栏: python编程

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】

    很多人说python的效率比较低,主要是没有分清什么时候用python、什么时候用c。对于网络、gui或者业务层面的代码,用python是完全可以的。但是对于算法、演算或者性能相关的逻辑,必须用c或者c++实现。因此回到windows平台,学会用python调用dll程序,是十分有必要的。用python调用dll不复杂,做好这几步就可以了,

1、创建一个dll工程

就按照vs2017的要求,“新建”-》“项目”-》“Visual C++”-》“Windows 桌面”-》“动态链接库”,一步一步创建工程即可

2、添加额外的函数代码

3、编译工程,检验是否生成dll文件

选择项目,右击,选择“重新生成解决方案”

4、开始编写python代码

5、验证是否可以使用add函数、sub函数

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配置文件,这样就可以了

如果c和python之间只是简单的数据传输,那么整数和字符串就可以了

一旦不是简单的数据,那么最好使用python原生的api,这样处理的效率更高点

注意使用ctypes库

https://docs.python.org/zh-cn/3.7/library/ctypes.html


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK