本文介绍Python通过ctype模块调用C代码的方法。
一、代码
- C方法实现
hello.h头文件
int __declspec(dllexport) sayHello();
int __declspec(dllexport) doubleValue(double value,double *result);
hello.c实现
#include "hello.h"
int __declspec(dllexport) sayHello()
{
return 110;
}
int __declspec(dllexport) doubleValue(double value,double *result){
*result = value*2;
return 0;
}
将C代码编译为dll文件“hello.dll”
- Python代码
import ctypes
from ctypes import*
lib = cdll.LoadLibrary("c:\\cache\\hello.dll")
print(lib.sayHello())
result = ctypes.c_double()
lib.doubleValue(ctypes.c_double(1.1),ctypes.byref(result))
print(result.value)
二、注意事项
(1)本文以Windows系统为例,其中__declspec(dllexport)是必需的。
(2)确保编译的dll与Python解释器兼容,比如同为64位。