包含python使用函数指针的词条

python ctypes 怎么处理函数返回的一般指针

test.c(动态库源代码)

创新互联公司秉承实现全网价值营销的理念,以专业定制企业官网,网站制作、网站建设,微信小程序定制开发,网页设计制作,成都手机网站制作全网营销推广帮助传统企业实现“互联网+”转型升级专业定制企业官网,公司注重人才、技术和管理,汇聚了一批优秀的互联网技术人才,对客户都以感恩的心态奉献自己的专业和所长。

[cpp] view plain copy

// 编译生成动态库: gcc -g -fPIC -shared -o libtest.so test.c

#include stdio.h

#include string.h

#include stdlib.h

typedef struct StructPointerTest

{

char name[20];

int age;

}StructPointerTest, *StructPointer;

StructPointer test() // 返回结构体指针

{

StructPointer p = (StructPointer)malloc(sizeof(StructPointerTest));

strcpy(p-name, "Joe");

p-age = 20;

return p;

}

编译:gcc -g -fPIC -shared -o libtest.so test.c

call.py(python调用C语言生成的动态库):

[python] view plain copy

#!/bin/env python

# coding=UTF-8

from ctypes import *

#python中结构体定义

class StructPointer(Structure):

_fields_ = [("name", c_char * 20), ("age", c_int)]

if __name__ == "__main__":

lib = cdll.LoadLibrary("./libtest.so")

lib.test.restype = POINTER(StructPointer)

p = lib.test()

print "%s: %d" %(p.contents.name, p.contents.age)

最后运行结果:

[plain] view plain copy

[zcm@c_py #112]$make clean

rm -f *.o libtest.so

[zcm@c_py #113]$make

gcc -g -fPIC -shared -o libtest.so test.c

[zcm@c_py #114]$./call.py

Joe: 20

[zcm@c_py #115]$

python使用C函数返回的指针

int* GrabImage();

int GetPixel(int* image, int x, int y);

void SetPixel(int* image, int x, int y, int color);

python有指针吗

python对指针做了良好的封装,一切都是对象。一切对象都有一个变量,指向他这个变量就是指针。跟java不一样, 他不可以随机移动,不可以运算。包括函数也是一个对象,用一个变量指向它,就是指向函数的入口地址。


名称栏目:包含python使用函数指针的词条
新闻来源:http://azwzsj.com/article/hhsggo.html