【python使用ctypes调用扩展模块的实例方法】教程文章相关的互联网学习教程文章

python – 如何保存包含指针的ctypes对象

我使用第三方库,经过大量计算后返回一个包含指针的ctypes对象. 如何保存ctypes对象以及指针指向以供以后使用?我试过了 > scipy.io.savemat => TypeError:无法将对象转换为数组> cPickle =>包含指针的ctypes对象无法进行pickle解决方法:Python无法自动为您执行此操作: 您必须构建代码以自己选择所有需要的数据,将它们放在合适的Python数据结构中(或者只是将数据添加到一个唯一的字节字符串中,您将知道每个元素的偏移位置) – 然后...

c – ctypes python std :: string【代码】

我正在使用C作为后端的ctypes.现在在C中有这样的函数:void HandleString(std::string something){... }我想知道如何从python调用此函数 – 没有ctype(c_char_p显然不会工作)将字符串参数发送到此函数… 我该如何修复此问题并将一个字符串从Python传递给c(并将参数更改为char *某些内容不是和选项) PS我可以创建这样的解决方法吗? >将python字符串作为c_char_p发送到将char *转换为std :: string的C函数>以某种方式返回字符串或其...

ctypes包装“MessageBoxA”示例在python33中不起作用【代码】

这个例子在python 3.3.2 doc中: http://docs.python.org/3/library/ctypes.html?highlight=ctypes#ctypes 但是:当我在翻译中尝试它时,我收到一个错误. 我使用windows7 32 python 3.3.2. 请帮忙.from ctypes import c_int, WINFUNCTYPE, windll from ctypes.wintypes import HWND, LPCSTR, UINT prototype = WINFUNCTYPE(c_int, HWND, LPCSTR, LPCSTR, UINT) paramflags = (1, "hwnd", 0), (1, "text", "Hi"), (1, "caption", Non...

使用ctypes提交’int’和’string’数组(Python-> C)【代码】

我有一个简单的工作程序,它将一个int(从示例中为num_piezasin)从Python函数提交给C函数. Foo.cpp中#include <iostream>class Foo{public:void bar(int number){printf("Number is: %d\n", number);} };extern "C" {Foo* Foo_new(){ return new Foo(); }void Foo_bar(Foo* foo, int number){ foo->bar(number); } }fooWrapper.pyfrom ctypes import cdll lib = cdll.LoadLibrary('./libfoo.so')class Foo(object):def __init__(self...

python – 使用ctypes快速迭代矩阵的列【代码】

让A成为一个矩阵import numpy as np A = np.matrix([[3.0, 1.0, 2.0, 0.0], [2.0, 1.0, 3.0, 1.0], [0.0, 2.0, 0.0, 3.0]])[[ 3. 1. 2. 0.][ 2. 1. 3. 1.][ 0. 2. 0. 3.]]我正面临一个复杂的库(基于ctypes接口),除了我指出矩阵的列,例如:import ctypesfor j in range(0,4):a = np.copy(A[:,j])lib.DoSomething(a.ctypes.data_as(ctypes.POINTER(ctypes.c_double)))显然,我很想避免将列复制到变量a中.我想有很多聪明的想法...

python – 在ctypes结构中访问np.array【代码】

我有一个动态分配数组的ctypes结构,即:array_1d_double=npct.ndpointer(dtype=np.double,ndim=1,flags='CONTIGUOUS') class Test(Structure):_fields_ = ("x", array_1d_double, ..)test = Test() do_some_init_in_c( for example malloc)如果我打印test.x,我得到以下输出:<ndpointer_<f8_1d_CONTIGUOUS object at 0x7f104dc0c3b0>c结构看起来大致如此,structure Test_s{double *x;.... };如何像numpy数组一样访问这个元素?是否...

子类化ctypes – Python【代码】

这是我在互联网上找到的一些代码.我不确定它是如何被使用的.我只是用枚举键/值填充成员,它可以工作,但我很好奇这个元类是什么.我假设它与ctypes有关,但我找不到有关子类化ctypes的更多信息.我知道EnumerationType没有像我使用Enumeration那样做任何事情.from ctypes import *class EnumerationType(type(c_uint)): def __new__(metacls, name, bases, dict): if not "_members_" in dict: _members_ = {} for key,value in dic...

Python ctypes加载错误:未定义的符号【代码】

我试图用ctypes将从C源编译的共享库加载到Python中.共享库(下面名为“libsub.so”)使用了libusb库.这就是“make”所做的:gcc -c -O2 -Wall -Werror -g -I../src -I../boot/vnd/fw -I. -fPIC -DLIBUSB_1_0 -I/usr/include/libusb-1.0 -o libsub.o libsub.c gcc -shared -Wl,-soname,libsub.so -o libsub.so libsub.o之后我尝试了Python:import ctypes h = ctypes.cdll.LoadLibrary('./libsub.so')但是,我收到了这样的错误 OSError...

如何使用ctypes将python列表传递给C函数(dll)【代码】

背景 我在Python中有一些分析软件我必须将一个4096字节的列表(看起来像[80,56,49,50,229,55,55,0,77,……])传递给一个dll ,以便dll将其写入设备. >要写入的字节存储在变量名称数据中>必须从python调用的c函数(在dll中)是 int _DLL_BUILD_ IO_DataWrite(HANDLE hDevice,unsigned char * p_pBuff,unsigned char p_nByteCntInBuff);>我无法访问dll代码 尝试了方法 我试图声明一种数据类型data_tx = (ctypes.c_uint8 * len(data))(*dat...

Python ctypes对齐数据结构【代码】

我有一个C库,它被编译成一个共享对象,并希望围绕它构建一个ctypes接口,从Python调用C函数. 一般来说它工作正常,但在C库中有一个双数组的定义:typedef double __attribute__ ((aligned (32))) double_array[512];我发现无法直接访问此类型,所以我在Python中定义:DoubleArray = ctypes.c_double * 512虽然这在大多数情况下都有效,但有时C库会出现段错误,我想这是因为DoubleArray没有与32个字节对??齐(可能库需要这个,因为数据传递给...

python – 导入ctypes.wintypes时出错【代码】

当我尝试导入ctypes.wintypes时出现此错误,我该如何解决这个问题?In [2]: import ctypes.wintypes --------------------------------------------------------------------------- ValueError Traceback (most recent call last) <ipython-input-2-8395760a4e8a> in <module>() ----> 1 import ctypes.wintypes/usr/lib/python2.7/ctypes/wintypes.py in <module>()21 22 from ctypes import _Sim...

CentOS下安装Python3.7报错ModuleNotFoundError: No module named '_ctypes'的解决方案【代码】

问题复现:编译安装Python3.7版本,在make install的时候,出现报错zipimport.ZipImportError: cant decompress data; zlib not available make: *** [install] Error 1解决方案:yum install zlib*问题复现2File "/tmp/tmpnfe1bbxk/pip-9.0.3-py2.py3-none-any.whl/pip/__init__.py", line 45, in <module> File "/tmp/tmpnfe1bbxk/pip-9.0.3-py2.py3-none-any.whl/pip/vcs/mercurial.py", line 9, in <module> File "/tmp/tm...

Python:CTypes与Structure一起发生内存泄漏【代码】

Python ctypes是否有已知的内存泄漏?我正在使用具有ctypes的具有以下代码段的代码编写Python脚本,由于某种原因导致了内存泄漏.本示例中的“ while True”用于测试由调用该函数引起的泄漏.它正在使用Python 2.5.4在Windows上运行:import ctypes def hi():class c1(ctypes.Structure):_fields_=[('f1',ctypes.c_uint8)]class c2(ctypes.Structure):_fields_=[('g1',c1*2)]while True:test=hi()可以使用ProcessExplorer测试该泄漏-由...

osx中的rsvg python内存泄漏(ctypes?)【代码】

我正在使用以下代码读取svg:from ctypes import CDLL, POINTER, Structure, byref, util from ctypes import c_bool, c_byte, c_void_p, c_int, c_double, c_uint32, c_char_pclass _PycairoContext(Structure):_fields_ = [("PyObject_HEAD", c_byte * object.__basicsize__),("ctx", c_void_p),("base", c_void_p)]class _RsvgProps(Structure):_fields_ = [("width", c_int), ("height", c_int),("em", c_double), ("ex", c_do...

python-比较ctypes数组而无需额外的内存【代码】

我有两个要比较的大型ctypes数组,没有额外的内存.直接比较不起作用:>>> a = ctypes.create_string_buffer(b'1'*0x100000) >>> b = ctypes.create_string_buffer(b'1'*0x100000) >>> a == b False使用value或raw属性都会在内存中创建数组的副本. 使用memoryview封装两个缓冲区会使速度大大降低. 对于Windows,可能的解决方案是直接使用msvcrt.memcmp,但是是否有更多的pythonic方式或跨平台方式来做到这一点?解决方法:可以使用ctype...

实例 - 相关标签