Python调用C语言函数
使用Python的ctypes,我们可以直接调用由C直接编译出来的函数。其实就是调用动态链接库中的函数。为什么我们需要这样做呢,因为有些时候,我们可能需要一个性能上比较讲究的算法,有些时候,我们可以在Python中使用已经有了的现成的被封闭在动态链接库中的函数。下面是如何调用的示例。
首先,我们用一个乘法来表示一个算法功能。下面是C的程序:
int
multiply(int num1, int num2)
{
return num1 * num2;
}
如果在Windows下,你可能需要写成下面这个样子:
include <windows.h>
BOOL APIENTRY
DllMain(HANDLE hModule, DWORD dwReason, LPVOID lpReserved)
{
return TRUE;
}
__declspec(dllexport) int
multiply(int num1, int num2)
{
return num1 * num2;
}
然后,自然是把这个C文件编成动态链接库:
Linux下的编译:
gcc -c -fPIC libtest.c
gcc -shared libtest.o -o libtest.so
Windows下的编译:
cl -LD libtest.c -libtest.dll
于是在我们的Python中可以这样使用:
(其中的libtest.so在Windows下改成libtest.dll即可)
from ctypes import *
import os
libtest = cdll.LoadLibrary(os.getcwd() + '/libtest.so')
print libtest.multiply(2, 2)
4
注意:上面的Python脚本中需要把动态链接库放到当前目录中。
转载于酷壳CoolShell 无删改 仅以此纪念陈皓(左耳朵耗子)
小弟只写过前端,没写过后端,现在写个小项目需要后端的一些实现。有个逻辑不太清楚应该怎么实现。 文件上传使用 minio 做文件存储。当前端想上传文件时候,前端请求一个 api …
感觉工作越久越缺少热情,同时也缺少那份学习的的激情,总觉得三天打鱼两天晒网。感觉自己好失败啊 不要把精力都放在工作上! 针对自己感兴趣的东西,写个软件做辅助,还可以提前在这…
🖋️ NiceFont 是我根据自己在浏览网页时的需求,开发的一款油猴脚本…… 每次打开网页,发现字体太小,眼睛容易疲劳,想要轻松阅读,却又不想依赖浏览器的页面放大缩小功能。我…
合速度