python 怎么调用c语言接口

 我来答
优就业张老师
2017-10-30 · TA获得超过1036个赞
知道小有建树答主
回答量:441
采纳率:88%
帮助的人:92.9万
展开全部

ctypes:  可直接调用c语言动态链接库。

使用步骤:

1> 编译好自己的动态连接库
2> 利用ctypes载入动态连接库
3> 用ctype调用C函数接口时,需要将python变量类型做转换后才能作为函数参数,转换原则见下图:

4> Python若想获取ctypes调用的C函数返回值,需要先指定返回值类型。我们将在接下来的完整Sample中看到如何使用。

#Step 1:  test.c#include <stdio.h>

int add(int a, int b)
{
    return a + b;
}#Step 2: 编译动态链接库 ( 如何编译动态链接库在本文不详解,网上资料一大堆。)gcc -fPIC -shared test.c -o libtest.so  
#Step 3:  test.py
from ctypes import *mylib = CDLL("libtest.so")   或者   cdll.LoadLibrary("libtest.so")   add = mylib.add
add.argtypes = [c_int, c_int] # 参数类型,两个int(c_int是ctypes类型,见上表)
add.restype = c_int # 返回值类型,int (c_int 是ctypes类型,见上表)
sum = add(3, 6)
匿名用户
2018-03-02
引用优就业张老师的回答:
ctypes: 可直接调用c语言动态链接库。
使用步骤:
1> 编译好自己的动态连接库2> 利用ctypes载入动态连接库3> 用ctype调用C函数接口时,需要将python变量类型做转换后才能作为函数参数,转换原则见下图:

4> Python若想获取ctypes调用的C函数返回值,需要先指定返回值类型。我们将在接下来的完整Sample中看到如何使用。
#Step 1: test.c#include <stdio.h>int add(int a, int b){ return a + b;}#Step 2: 编译动态链接库 ( 如何编译动态链接库在本文不详解,网上资料一大堆。)gcc -fPIC -shared test.c -o libtest.so #Step 3: test.pyfrom ctypes import *mylib = CDLL("libtest.so") 或者 cdll.LoadLibrary("libtest.so") add = mylib.addadd.argtypes = [c_int, c_int] # 参数类型,两个int(c_int是ctypes类型,见上表)add.restype = c_int # 返回值类型,int (c_int 是ctypes类型,见上表)sum = add(3, 6)
展开全部
我用了linux系统就成功了,好奇怪,win莫名其妙的会报错
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式