首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python3使用ctypes在wind

python3使用ctypes在wind

作者头像
py3study
发布2020-01-03 12:38:42
1.5K0
发布2020-01-03 12:38:42
举报
文章被收录于专栏:python3python3

python3使用ctypes在windows中访问C和C++动态链接库函数示例 这是我们的第一个示例,我们尽量简单,不传参,不返回,不访问其他的动态链接库 一 测试环境介绍和准备 测试环境: 操作系统:windows10 Python版本:3.7.0 VS版本:vs2015社区版(免费) 相关工具下载: VS版本vs2015社区版(免费) Python3.7.0 (源码和安装文件) http://ffmpeg.club/python 二 C/C++部分代码 1 首先完成C/C++的动态链接库,与做python扩展库不同,ctypes调用的c++库其实与python没有代码关联,只是提供了开放公共标准。

2 创建VS的win32项目,选择DLL库的空项目,也可以选择导出符号,他会帮你把动态库的一些宏做好。

python3使用ctypes在windows中访问C和C++动态链接库函数示例
python3使用ctypes在windows中访问C和C++动态链接库函数示例

3 创建testctypes.cpp代码

python3使用ctypes在windows中访问C和C++动态链接库函数示例
python3使用ctypes在windows中访问C和C++动态链接库函数示例

其中extern "C"表示将此函数编译为c语言函数,如果你源码是.c也就是用c语言编译则不需要加extern "C"。 __declspec(dllexport) 是windows中特有的导出库函数,如果没有这个库函数是访问不到的,如果做跨平台到linux中可以通过宏语法把它去掉。

4 将dll文件导出设置到当前项目路径,并完成编译

python3使用ctypes在windows中访问C和C++动态链接库函数示例
python3使用ctypes在windows中访问C和C++动态链接库函数示例

我们编译出win32的debug库,注意位数不能错,如果是python是64位的也编译64位的库

python3使用ctypes在windows中访问C和C++动态链接库函数示例
python3使用ctypes在windows中访问C和C++动态链接库函数示例

三 Python部分的代码 from ctypes import lib = CDLL("testctypes") #可以加路径 lib.CFunction()

python3使用ctypes在windows中访问C和C++动态链接库函数示例
python3使用ctypes在windows中访问C和C++动态链接库函数示例

from ctypes import 导入ctypes库所有类和函数 CDLL("testctype")加载具体的动态链接库文件,可以加入路径比如 dll/testctype ,在windows中省略动态库的后缀名dll,python会找testctype.dll的文件。注意dll文件可以放在python执行的路径下,也可以放到系统路径或者path环境变量所设置的路径。 lib.CFunction() 加载动态链接库中的CFunction函数,注意虽然我们用c++来做扩展库,python本身也做了很多支持c++的代码,但ctypes访问函数只支持C语言函数,C++函数因为有重载函数名不确定,所以无法访问。 运行测试结果

python3使用ctypes在windows中访问C和C++动态链接库函数示例
python3使用ctypes在windows中访问C和C++动态链接库函数示例

测试成功,第一步我们完成,下一篇文章再开始来添加参数和返回值

http://edu.51cto.com/course/15278.html

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-09-24 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档