最近小狼设计课题中有使用python和c混合编辑的需求,在这里做一个简单备注。
所谓dll文件,即动态链接库(英语:Dynamic-link library,缩写为DLL)
wiki上解释为:所谓动态链接,就是把一些经常会共享的代码(静态链接的OBJ程序库)制作成DLL档,当可执行文件调用到DLL档内的函数时,Windows操作系统才会把DLL档加载存储器内,DLL档本身的结构就是可执行档,当程序有需求时函数才进行链接。透过动态链接方式,存储器浪费的情形将可大幅降低。
一、生成dll文件
1.首先需要使用devc++新建空白dll文件,然后选中C项目
软件生成了一个dllmain.c和dll.h文件,此时我们可以将需求函数写入。
2.编辑函数
在dllmain.c文件中添加
//
DLLIMPORT int add(int a, int b)
{
return a+b;
}
在dll文件中对add()函数进行申明
DLLIMPORT int add(int a, int b);
3.进行编译,最终将会在对应目录下生成对应dll文件
二、python调用dll文件
1.将生成的dll文件复制到对应的python项目下
2.在py文件中进行运行
import ctypes
dll = ctypes.CDLL('test_dll.dll')
print dll.add(1, 2)
需要导入ctypes这个库,然后使用cdecl调用约定声明的导出函数,调用约定的导出函数add()
至此,我们的简单生成和调用dll文件已经实现。