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 
#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)