python 怎么调用c语言接口
2个回答
展开全部
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)
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莫名其妙的会报错
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询