ctypes

    1热度

    1回答

    我最近继承了一个项目,在该项目中我们反序列化了一个由我无法更改的系统写出的一串数据(希望他们使用标准串行器,但我无法更改此项)。在大多数情况下,我能够使用ctypes来表示结构并将数据正确地转换为Python,但是我们有一些情况下底层的数据结构是一团糟(再次,无论我尝试过多少次都无法改变)。当C结构定义如下2例正在推动我坚果试图找到一种有效的方式是: 简单的例子: struct b{ i

    5热度

    1回答

    我目前有一个Fortran函数,我想用SciPy使用Ctypes对其进行优化。这可能吗?也许我在执行过程中做了错误的事情。例如,假设我有: cost.f90 module cost_fn use iso_c_binding, only: c_float implicit none contains function sin_2_cos(x,y) bind(c)

    1热度

    2回答

    我想知道如果有人能告诉我是否有更好/更快的方法从我的C程序中读取数据,输出两个大小为的文件列表。我正在使用​​来调用C程序。 我在下面展示的循环通过迭代多次扫描来工作。对于每次扫描,生成两个列表(msX, msY)。通过使用列表理解循环提取c_float数据。将mzP和mzI获得的c_float_Array转换为msX和msY有没有更好/更快的方法? for scan in xrange(nSca

    2热度

    1回答

    例如,下面是用指针来返回一个简单的C函数值: void add(double x, double y, double *r) { *r = x + y; } 我想打电话给每一个元素add()功能在两个数组中,并通过numba @jit函数收集结果。 第一编译的C代码: !gcc -c -fpic func.c !gcc -shared -o func.so func.o 而

    1热度

    2回答

    C函数(以下代码中的image_data变量)返回指向类型为POINTER(c_ubyte)的缓冲区的指针。我希望这些数据由Python管理,因此我想将它复制到bytearray。这里的函数调用 image_data = stb_image.stbi_load(filename_cstr, byref(width), byref(height), byref(num_cha

    1热度

    1回答

    我在Lazarus中有一个非常小的库,我无法在Mac上将它与ctypes一起使用。我真的不明白自己做错了什么,我希望有人能指出我正确的方向。 这是我在拉撒路的代码。在Linux机器(Ubuntu VM)上编译时,一切正常。我可以创建一个Linux .so文件,并使用ctypes,我可以调用共享库。 library project1; {$mode delphi}{$H+} {$IFDEF

    9热度

    1回答

    我使用ctypes连接到外部库。这个库返回给我一个二进制缓冲区。接口看起来是这样的: int getBuff(unsigned char **buf, int *len); 图书馆还出口释放器,这样我可以释放缓冲区时,我用它做,但是这方面不存在问题给我,所以我不认为我们需要覆盖它。 在我的ctypes代码中,我将buf参数表示为c_void_p。我想尽可能有效地将这个缓冲区复制到一个字节对象中

    0热度

    1回答

    我需要编写一个Python程序来调用某些函数,并从第三方共享库中获取JSON响应(一个unicode字符串)。据推测该库是用C++编写的。图书馆有含以下一个头文件: #include <string> #include <ExportLib.h> // some code ignored here typedef std::string UString; using namespace s

    1热度

    1回答

    我正在通过ctypes将C库包装到Python中。此刻,我坚持一行或多行参数。这里的C代码: void* gVimbaHandleFake = (void*)1; err = VmbFeatureBoolGet(gVimbaHandleFake, "GeVTLIsPresent", &isGigE); 问题是这个奇怪的void指针。一般来说,我知道什么是无效指针,但这个似乎是“特殊的”。如果

    1热度

    1回答

    假设我有一个外部的库如下功能: void foo(const unsigned char *buf, const int len); 我希望能够从我的Python代码调用这个函数,使用​​,未做缓冲区的副本。缓冲区可能相当大,因此避免复制具有明显的性能优势。为了方便我的代码的使用者,我希望能够以bytes或bytearray的形式提供此缓冲区。 目前我在argtypes声明中声明buf为cty