Tag: python

使用qdbmp读取.bmp图像

我正在使用一个名为qdbmc的库来读取bmp灰色图像(lena_gray.bmp) 这是图书馆的链接 这是我的代码: int read_image(char *filename) { struct _BMP* bmp; UINT width, height; UCHAR red,green,blue; bmp = BMP_ReadFile(filename); BMP_CHECK_ERROR( stderr, -1 ); /* Get image’s dimensions */ width = BMP_GetWidth( bmp ); height = BMP_GetHeight( bmp ); printf(“%lu %lu \n”,width,height); /* Iterate through all the image’s pixels */ for (int x = 0 ; x […]

在C代码中调用python函数

我在python中写了两个数字的小代码。 addition.py def add(a,b): c=a+b print “result is…”,c mainpgm.c ??? 如何调用C(mainpgm)程序中的addition.py/add函数。 我已经看到了一些链接,但我不清楚。 有关在c中调用该函数的任何建议。

如何编译C函数使用LAPACK库的C扩展?

我为Python编写了一个C extesion,并且该模块在.so文件中成功编译。 但是,当我尝试在Python端使用包装的C函数(python中的一个测试代码调用包装的C函数)时,我得到以下ImportError ImportError: /home/username/newModule.cpython-36m-x86_64-linux-gnu.so: undefined symbol: dgetri_ 我很确定导入错误中的undefined symbol: dgetri_是因为生成的.so文件找不到LAPACK库的链接。 所以我的问题如下, 当包装的C函数依赖于LAPACK库来生成.so格式的模块时,如何为python编译c扩展代码? 目前我正在使用python的utils.core模块编译C代码。 我想我需要从命令行编译C代码来链接LAPACK但是不知道哪些是适当的命令? 任何帮助表示赞赏。

在Python SWIG中包装void *参数

我用Python SWIG包装这个lib,它有一个如下所示的函数: int set_option(Foo *foo, const char *name, void *value); 在lib const char *name中映射到我有权查询的类型: int , char * , char ** 。 默认生成的包装器代码只接受包装的void * (自然)。 使包装方法接受任何 Python对象作为参数的最佳方法是什么,并在我自己的C代码中进行类型检查和Python到C转换? 我的猜测是某种类型的地图,但唉,我无法弄清楚。 @Goodies In [12]: lib.set_option(foo, “option”, “value”) ————————————————————————— TypeError Traceback (most recent call last) in () —-> 1 lib.set_option(foo, “option”, “value”) TypeError: in method ‘set_option’, argument 3 of […]

Python或C / C ++中的RTSP库?

我正在尝试为Python或C / C ++找到任何RTSP流媒体库。 如果没有,还有其他实时流媒体解决方案吗? 在Python或C / C ++中实现RTSP以及从何处入手是多么容易或困难?

任何错误后,PyRun_String都会停止向stdout发送结果

我正在用C ++编写一个Python终端GUI。 我正在使用以下代码来运行用户类型的Python命令行: void RunTerminalCommand (char * line) { PyObject *py_main, *py_dict; py_main = PyImport_AddModule(“__main__”); py_dict = PyModule_GetDict(py_main); PyObject * PyRes = PyRun_String(line, Py_single_input, py_dict, py_dict); return 0; } 它工作得非常好,命令行正在执行,结果通过stdout打印在输出窗口上。 但是每当Python命令行导致Python错误时,它就会停止工作:我的stdout不会收到任何数据 笔记: 即使在注入错误行之前,PyRes也总是返回NULL 我不知道每次都应该调用PyImport_AddModule。 但它似乎以这种方式工作。 如果我使用pyRun_SimpleString(line)的PyRun_String(line,Py_single_input,py_dict,py_dict) ,它总是有效,我仍然通过stdout / stderr得到错误消息。 但是这个调用不会将命令行evaluateatiosn的结果发送到stdout,所以我不想使用它。 例如,当我使用PyRun_String时,命令行“2 + 2”将在stdout上打印“4”,但是当我使用PyRun_SimpleString时则不会。

Swig和多维数组

我正在使用Swig将Cthon与C代码连接起来。 我想调用一个C函数,它接受一个包含int ** var的struct的参数: typedef struct { (…) int** my2Darray; } myStruct; void myCFunction( myStruct struct ); 我正在努力研究多维数组。 我的代码如下所示: 在接口文件中,我使用carray像这样: %include carrays.i %array_class( int, intArray ); %array_class( intArray, intArrayArray ); 在python中,我有: myStruct = myModule.myStruct() var = myModule.intArrayArray(28) for j in range(28): var1 = myModule.intArray(28) for i in range(28): var1[i] = (…) filling var1 (…) var[j] […]

使用Python的CFFI并排除系统头

我正在尝试使用Python的CFFI开发Python绑定到用C编写的科学模型.CFFI文档有点稀疏,我陷入了cdef阶段。 到目前为止,我的流程遵循以下步骤: 预处理头文件: gcc -E -gcc -std=c99 -E -P src/my_c_interface.c -I./include/ -I../shared/include/ > header.txt 这将生成一个文本文件,其中包含include/目录中头文件中包含的所有C声明。 它还包括标准库的声明(我很确定这是我的问题所在)。 header.txt看起来像这样(完整的header.txt在这里 ): 从系统标题开始: typedef float float_t; typedef double double_t; extern int __math_errhandling(void); extern int __fpclassifyf(float); extern int __fpclassifyd(double); extern int __fpclassifyl(long double); extern __inline __attribute__((__gnu_inline__)) __attribute__ ((__always_inline__)) int __inline_isfinitef(float); extern __inline __attribute__((__gnu_inline__)) __attribute__ 并以我的标题中定义的片段结束: FILE *LOG_DEST; void finalize_logging(void); void […]

运行SWIG绑定的Python + C程序在另一台计算机上运行时会出现DLL错误

所以我编写了一个小的测试程序,它使用SWIG作为python和C之间的桥梁。程序的主要部分是python文件。 事情在我自己的电脑上运行良好,但是一旦我将它转移到另一个,它会立即抛出“ImportError:DLL加载失败:找不到指定的模块。” 错误。 我试图通过将它移动到我自己的电脑上的另一个目录来查看是否可以是静态编码的文件位置,这仍然可以正常工作。 接下来我在SWIG python包装器中做了一些调试,找出了它加载的DLL; 其文件路径也是正确的。 我的其他PC也有正确的路径。 有谁知道我可能忘记了导致此错误的事情?

在Python CFFI中声明包含time_t字段的struct

我正在使用CFFI从Python调用一个返回结构的C函数。 结构使用time_t元素定义。 如何将结构声明为CFFI,以便我可以从Python访问它? 例如,我尝试了以下(获取文件的修改时间): import cffi ffi = cffi.FFI() ffi.cdef(“”” // From POSIX struct timespec { time_t tv_sec; long tv_nsec; …; }; struct stat { struct timespec st_mtim; …; }; // From “man 2 lstat” int lstat(const char *path, struct stat *buf); “””) stat = ffi.verify(“#include “) 这给出了一个错误: cffi.api.CDefError: cannot parse ” time_t tv_sec;” :5: […]