当前位置:首页 » 编程语言 » pythondll指针

pythondll指针

发布时间: 2023-11-22 01:43:25

‘壹’ python调用dll怎么传入一个指针接收结果

dk 可能是调用Create_Data前开辟的一个空间,dkLen传入该空间大小,以方便函数Create_Data写入结果到指针指向的空间。

‘贰’ Python使用Ctypes调用lib,怎么使用指针类型参数接收输出参数

本文演示了在python中调用C语言生成的动态库,返回结构体指针,并进行输出!

test.c(动态库源代码)
// 编译生成动态库: 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语言生成的动态库):
#!/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)

最后运行结果:
[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或C ++等低级语言,那么您可能已经听说过指针。指针允许您在部分代码中创建高效率。它们也会给初学者带来困惑,并且可能导致各种内存管理错误,即使对于专家也是如此。那么在Python中有指针的存在吗?

指针广泛用于C和C ++。本质上,它们是保存另一个变量的内存地址的变量。有关指针的更新,可以考虑在C指针上查看此概述。

为什么Python没有指针?

实际上指针为何不存在的原因现在还不知道,也许指针违背了Python的禅宗。指针鼓励隐含的变化而不是明确的变化。但通常情况下,它们很复杂而不是很简单,特别是对于初学者。更糟糕的是,当他们用指针指向自己的方法,或做一些非常危险的事情,比如从你无法获取的的一些变量中读取数据。

Python更倾向于尝试从用户那里抽象出内存地址来实现具体细节,所以Python通常关注可用性而不是速度。因此,Python中的指针并没有多大意义。但是在有些情况下,Python会为您提供使用指针的一些好处。

想要理解Python中的指针,需要理解Python实现指针功能的具体细节。简单来说,需要了解这些知识点:

不可变对象和可变对象【Python中的对象】

Python变量/名称【Python中的变量】

【在Python中模拟实现指针】

热点内容
如何配置组合音响 发布:2025-07-12 12:53:54 浏览:93
c语言幂计算 发布:2025-07-12 12:52:36 浏览:566
兔费WLAN密码多少 发布:2025-07-12 12:50:59 浏览:860
阿里云分布式存储 发布:2025-07-12 12:45:04 浏览:535
sql日志压缩 发布:2025-07-12 12:39:53 浏览:343
红点角标算法 发布:2025-07-12 12:11:16 浏览:844
开心消消乐服务器繁忙什么情况 发布:2025-07-12 12:11:14 浏览:239
数据库的封锁协议 发布:2025-07-12 12:10:35 浏览:725
如何配置一台长久耐用的电脑 发布:2025-07-12 11:43:03 浏览:602
昆明桃源码头 发布:2025-07-12 11:38:45 浏览:569