python调用c代码2

1、生成动态链接库

[root@typhoeus79 c]# more head.c 
#include <stdio.h>
#include <stdlib.h>

typedef struct _point{
    int x;
    int y;
}Point;

Point * InitPoint(int x,int y)
{
    Point *p = (Point *)malloc(sizeof(Point));
    p->x = x;
    p->y = y;

    return p;
}

Point * Incre(Point * p)
{
    p->x = p->x + 1;
    p->y = p->y + 1;

    return p;
}
gcc -fPIC -shared -o libhead.so ./head.c 

python调用

[root@typhoeus79 ice_test_m c]# more test.py 
#!/usr/bin/env python2.7
#-*- coding:utf-8 -*-

from ctypes import *

class Point(Structure):
    _fields_ = [("x",c_int),("y",c_int)]

if __name__ == '__main__':
    ddl = CDLL("./libhead.so")

    ddl.InitPoint.restype = POINTER(Point)

    p = ddl.InitPoint(5,6);


    print p.contents.x
    print p.contents.y
[root@typhoeus79 ice_test_m c]# ./test.py 
5
6

转载于:https://www.cnblogs.com/gsblog/p/3791194.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值