Python 调用 DLL

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!


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值