Articles of ctypes

Obtención de la dirección del tipo de datos personalizado en C de Python usando ctypes

Tengo una estructura vector en C con los siguientes campos, struct vector { unsigned char* data; unsigned long size; unsigned long elemsize; unsigned long capacity; }; y hay algunas funciones que actúan correspondientemente en instancias vector , tales como: struct vector* vector_new(unsigned long elemsize); void vector_delete(struct vector* vec); void vector_push_back(struct vector* vec, void* value, unsigned […]

Excepción de captura en ctypes basada en el código de salida C

Estoy llamando a una biblioteca compartida escrita en C desde Python/numpy usando ctypes . Esto funciona de forma fantástica, sin embargo, cuando se usa la función de exit en C algunos resultados inesperados ocurren en iPython . Considere el siguiente ejemplo, donde el primer elemento de una matriz “A” se modifica en C Si el […]

Acceda a c_char_p_Array_256 en Python usando ctypes

Tengo un puente Python nativo a algún código C, que devuelve un puntero a una matriz (matriz de estructuras). La estructura contiene algunas matrices de caracteres (cadenas). Pero, ¿cómo puedo pasar de un c_char_p_Array_NNN a una cadena de Python real? typedef struct td_Group { unsigned int group_id; char groupname[256]; char date_created[32]; char date_modified[32]; unsigned int […]

Error de CTypes al cargar la DLL que llama a otra DLL

EDITAR: publiqué una resolución parcial a este problema en DLL que llama a Python C / API tiene problemas de dependencia . Esta publicación muestra el código fuente involucrado, pero parece que el código fuente no es el problema. Estoy usando CTypes para llamar a una DLL NASM de 64 bits que llama a una […]

Ctypes: mapeando un puntero devuelto a una estructura

He intentado leer todas las preguntas / respuestas sobre este tema, pero no pude hacer nada para trabajar. Todo lo que estoy tratando de hacer es enviar una estructura a un objeto compartido, y luego devolverlo y ser accesible. Me las arreglé para crear una estructura OK, y puedo pasarla bien al objeto compartido. Sé […]

Python 2D array i C usando ctypes

Estoy tratando de usar un c lib auto-escrito para procesar 2d array desde python pero con poco éxito. Aquí está mi código c: CamLibC.c int TableCam(const int x, const int y, int **Array) { int i = 0; int j = 0; for (i; i < x; i++) { for (j; j < y; j++) […]

Python ctypes: envolviendo la clase c ++ con operadores

Quiero envolver una pequeña prueba de clase C ++ para usar en Python usando ctypes. La clase se llama Edge y tiene un operador de comparación de amigos (==). Estoy teniendo dificultades para implementar la función de comparación en el código de python envoltorio. Un encabezado de Edge sucinto es: class Edge { private: int […]

Python Ctypes pasando en Pointer y recuperando la fuerza

Este es un ejemplo simple de algo que estoy tratando de empezar a trabajar antes de abordar un problema realmente útil. El código C: typedef struct { uint32_t seconds; uint32_t nanoseconds; } geoTime; int myTest(geoTime *myTime){ printf(“Time: %d %d\n”, myTime->seconds, myTime->nanoseconds); myTime->seconds = myTime->nanoseconds; geoTime T = {314, 159}; printf(“MyTime: %d %d retValue: %d %d\n”, […]

Convertir el archivo .so de linux en un archivo .dll de windows

Tengo un código C (con varios archivos de encabezado y un archivo de .so ) comstackdo como un archivo .so en Linux (Ubuntu) y un progtwig de python que llama a las funciones de este objeto compartido utilizando Ctypes . Ahora, quiero usar este progtwig en windows. En Windows, Ctypes necesita un archivo .dll lugar […]

¿Detectando los límites de los tipos C (“limits.h”) en python?

He hecho un pequeño progtwig de prueba en Python para probar algunas funciones de C en muchos casos. Este progtwig de Python usa ctypes para importar y usar mis funciones C. Pero también me gustaría probar los casos de valores mínimos y máximos (los ULLONG_MAX de ULLONG_MAX por ejemplo). Pero como algunos de estos límites […]