Python 调用 DLL


一、C++ 编写 DLL

1、.hpp 头文件

// dll_test.hpp#ifdef DLL_TEST
#define MY_API _declspec(ddllexport)    // 当头文件作为DLL工程编译时(会用到DLL工程中的 .cpp 文件),设为导出。
#ELSE
#define MY_API _declspec(dllimport)    // 当DLL被其它工程调用时(不会用到DLL工程中的 .cpp 文件),设为导入。
#endif //需要被外界调用的类(父类)
class MY_API my_class
{
public:// 类成员变量int x;// 类方法void func(int x);
};// 函数,真正的函数名由编译器决定
int MY_API add(int x, int y);  // 函数,函数名不会被改变
extern "C" MY_API int  add(int x, int y);

2、.cpp 文件

// dll_test.cpp#define DLL_TEST    // 定义宏,使编译DLL工程时为导出 (结合头文件看)#include <iostream>
#include "dll_test.hpp"
using namespace std;// 类方法实现
void MY_API my_class::func(int x)
{cout <<  x << endl;
} // 函数实现
int MY_API add(int x, int y)
{return x+y;
}

二、Python 调用 DLL

1、ctypes 库

  • ctypes 库用来调用 windows 的 dll / linux 的 so
  • python 自带 ctypes 库,不需额外安装

2、调用 DLL

  • 第一步:用 c/c++,创建一个 dll
  • 第二步:把生成的 .dll 文件拷贝到 .py 文件的同级目录
  • 第三步:使用 ctypes 库调用 dll
# 导入 ctypes 库
from ctypes import *  # 加载 dll 文件为一个对象
dll = CDLL("dll_test.dll")  # 调用 dll 中的函数,dll 要有add()函数
res = dll.add(1, 2)

GOOD LUCK!


Python 调用 DLL相关推荐

  1. python调用dll报错:ValueError: Procedure called with not enough arguments (4 bytes missing) or wrong call

    python调用dll报错:ValueError: Procedure called with not enough arguments (4 bytes missing) or wrong call ...

  2. python调用dll函数_从Python调用DLL函数

    我想从Python调用DLL中的函数.但我有个错误:"Attribute Error function not found" 这是我的代码:import os import cty ...

  3. Qt + Python + OpenCV图标替换工具 之 Python调用dll(三)

    目录 上一篇博文 程序的下载地址以及源码 Python调用dll 上一篇博文 Qt + Python + OpenCV图标替换工具 之 获取颜色及生成图片(二) https://blog.csdn.n ...

  4. python编程(python调用dll程序)

    [ 声明:版权所有,欢迎转载,请勿用于商业用途. 联系信箱:feixiaoxing @163.com] 很多人说python的效率比较低,主要是没有分清什么时候用python.什么时候用c.对于网络. ...

  5. 用python读取身份证信息的功能分析与实现,兼述python调用dll的方法

    背景 有这样一个需求,要求能自动读取用户的身份证信息.如果是一代身份证,这个功能恐怕只能通过图像识别的办法来解决了.不过现在二代身份证已经很普及.客户要求能读二代身份证就可以了. 现在二代身份证阅读器 ...

  6. 【DLL】clion生成.dll文件、python调用.dll文件

    最近为了生成以及调用.dll文件,踩了一些雷,记录如下 目录 1.clion中生成.dll 2.clion中测试生成的.dll文件 3.在python中调用.dll文件 [1]导入.dll [2]ct ...

  7. python调用dll函数指针_python使用ctypes库调用DLL动态链接库

    最近要使用python调用C++编译生成的DLL动态链接库,因此学习了一下ctypes库的基本使用. ctypes是一个用于Python的外部函数库,它提供C兼容的数据类型,并允许在DLL或共享库中调 ...

  8. python和C++联合开发(python调用DLL文件)

    在开发的过程中的有的厂家提供的API,或者其他同事写的功能模块用的是C++语言,而因为我们自己菜或者懒习惯使用python脚本语言开发,这里主要讲解如何使用python调用DLL文件(windows平 ...

  9. python调用dll依赖项

    python调用多依赖库dll报错[WinError 126] 找不到指定的模块 原文:https://blog.csdn.net/Kelvin_Yan/article/details/8600893 ...

最新文章

  1. Nokia BH-700及三星wep250这两款蓝牙耳机和电脑配对的方法
  2. 程序基础:数据结构(郝斌讲解)(2)
  3. python xml.dom模块解析xml
  4. 牛客题霸 [将升序数组转化为平衡二叉搜索树]C++题解/答案
  5. java字节型的关键字_DAY06-07 Java的基础语法-注释、标识符、关键字、数据类型
  6. Android系统性能优化(68)---绘制优化
  7. java中json对象去重复_如何忽略Java中JSON对象的多个属性?
  8. Exception in thread main java.lang.NoClassDefFoundError解决了
  9. 服装行业SCM供应链管理平台优化资源配置效率,促进企业提质增效
  10. Maxwell 一款简单易上手的实时抓取Mysql数据的软件
  11. 读书笔记之稻盛和夫自传
  12. c语言运用(1)口算比赛
  13. 2019年安徽省学业水平考试计算机,2019年安徽高中学业水平考试信息技术与通用技..._报关水平_帮考网...
  14. 程序员必备注释模板——“佛祖保佑 永无bug“
  15. 计算机网络TCP的全称,tcp/ip全称是什么
  16. webrtc(2):Centos6 安装 stun/turn服务
  17. 语音信号处理-概念(一):时域信号(横轴:时间;纵轴:幅值)、频谱图(横轴:频率;纵轴:幅值)--傅里叶变换-->时频谱图(语谱图/声谱图)【横轴:时间;纵轴:频率;颜色深浅:幅值】
  18. BT3amp;spoonwep无线破解与Q3amp;spoonwep无线破解哪个容易
  19. js文件中引入js的方法
  20. 《阿里云天池大赛赛题解析(深度学习篇)》学习笔记(1)自然语言处理基础

热门文章

  1. Sitecore 9 为什么数据驱动的组织选择它
  2. CSS 字体、边框阴影
  3. 网络编程基础之C/S架构和TCP/IP协议
  4. 继承“HibernateDaoSupport”后,报“The hierarchy of the type AccoutDaoImpl is inconsistent”的解决方案...
  5. hdu 4602 Partition
  6. mongodb空间查询之查询单位
  7. Python chardet 字符编码判断
  8. 智能客户端(SmartClient)
  9. hello,world———C++入门有感
  10. python下 help()使用方法