Python&C++相互混合调用编程全面实战-使用Python的ctypes调用的windows的dll动态链接库

Python&C++ xuhss 804℃ 0评论

作者:虚坏叔叔
博客:https://xuhss.com

早餐店不会开到晚上,想吃的人早就来了!?

一、下载VS2015和PyCharm

1.1下载visual studio2015

VS2015 社区版(Community)百度网盘下载地址:

链接:https://pan.baidu.com/s/1n5aZIBusu3uCtPPVOFQzZg
提取码:g73q

或者直接百度vs2015免费社区版下载即可。

1.2.下载Pycharm和Python

Pycharm百度搜索pycharm社区版下载

python下载3.7的32位版本

二、创建Ctypes可以调用的动态链接库

2.1 创建项目

0fa38883cef746daa5f169960a5f7cc7 - Python&C++相互混合调用编程全面实战-使用Python的ctypes调用的windows的dll动态链接库

应用程序设置:

选择DLL,附加选项勾选空项目

71def9c147e2e0b249b72b36f590ceea - Python&C++相互混合调用编程全面实战-使用Python的ctypes调用的windows的dll动态链接库

点击完成后,就创建好了一个dll项目。

2.2 创建源文件并导出动态链接库

右键源文件,创建一个cpp文件:

f16bde1bce5e416db7fc5bec6cf3b410 - Python&C++相互混合调用编程全面实战-使用Python的ctypes调用的windows的dll动态链接库

定义导出函数TestCtypes:

// C++ 中编译c格式的函数,如果用c语言编译就不需要(文件后缀名.c)
// __declspec(dllexport)函数导出到库中
#include <stdio.h>
extern "C" __declspec(dllexport) void TestCtyps()
{
    printf("In C TestCtypes\n");
}

生成解决方案就可以看到生成了testctypes.dll文件:

676def39237598e632032c07266dd503 - Python&C++相互混合调用编程全面实战-使用Python的ctypes调用的windows的dll动态链接库

三、Python调用ctypes动态链接库

3.1创建python文件

注意,因为我们导出的dll是32位的, 所以你的Python版本也应该是32位。这里我的Python版本是3.7.

在生成的dll文件的目录中,添加一个testctypes.py文件

adc0a0d3f3a69fe060952f31d0331e99 - Python&C++相互混合调用编程全面实战-使用Python的ctypes调用的windows的dll动态链接库

print("Test Ctypes")
from ctypes import *

#导入库 windows中dll后缀名不用加
lib =  CDLL("C:\\Users\\hbq\\Desktop\\Debug\\testctypes")
lib.TestCtyps()

3.2 pycharm配置运行python文件

可以使用Pycharm打开这个目录:,然后配置项目并运行程序:

9fc8380ba40b485ba873f19cb5320032 - Python&C++相互混合调用编程全面实战-使用Python的ctypes调用的windows的dll动态链接库

eac8e7b6add74d4a8df93cb38845fb07 - Python&C++相互混合调用编程全面实战-使用Python的ctypes调用的windows的dll动态链接库

运行 就能够成功的让Python调用c++的动态链接库了:

a9cd21dbb54e47e197f5659191814766 - Python&C++相互混合调用编程全面实战-使用Python的ctypes调用的windows的dll动态链接库

四、总结

  • 本文使用Python的ctypes调用的windows的dll动态链接库。
  • 这里需要注意的是32位的Python只能调用32位的ctypes库,64位的Python只能调用64位的ctypes库.
  • 如果觉得文章对你有用处,记得 点赞 收藏 转发 一波哦,博主也支持为铁粉丝制作专属动态壁纸哦~

? 往期优质文章分享

? 优质教程分享 ?

  • ?如果感觉文章看完了不过瘾,可以来我的其他 专栏 看一下哦~
  • ?比如以下几个专栏:Python实战微信订餐小程序、Python量化交易实战、C++ QT实战类项目 和 算法学习专栏
  • ?可以学习更多的关于C++/Python的相关内容哦!直接点击下面颜色字体就可以跳转啦!
学习路线指引(点击解锁) 知识定位 人群定位
? Python实战微信订餐小程序 ? 进阶级 本课程是python flask+微信小程序的完美结合,从项目搭建到腾讯云部署上线,打造一个全栈订餐系统。
?Python量化交易实战 ? 入门级 手把手带你打造一个易扩展、更安全、效率更高的量化交易系统
❤️ C++ QT结合FFmpeg实战开发视频播放器❤️ 难度偏高 分享学习QT成品的视频播放器源码,需要有扎实的C++知识!
? 游戏爱好者九万人社区? 互助/吹水 九万人游戏爱好者社区,聊天互助,白嫖奖品
? Python零基础到入门 ? Python初学者 针对没有经过系统学习的小伙伴,核心目的就是让我们能够快速学习Python的知识以达到入门

? 资料白嫖,温馨提示 ?

关注下面卡片即刻获取更多编程知识,包括各种语言学习资料,上千套PPT模板和各种游戏源码素材等等资料。更多内容可自行查看哦!

2e3d1f57d8cc4b689c0ec284120b1acc - Python&C++相互混合调用编程全面实战-使用Python的ctypes调用的windows的dll动态链接库

转载请注明:xuhss » Python&C++相互混合调用编程全面实战-使用Python的ctypes调用的windows的dll动态链接库

喜欢 (1)

您必须 登录 才能发表评论!