[pyar] Acceder a constantes de bibliotecas C con Python usando ctypes

Ramiro Morales cramm0 en gmail.com
Sab Oct 9 17:46:45 ART 2010


2010/10/9 Angel Guzman Maeso <shakaran en gmail.com>:
>
> Ambas opciones creo que funcionarían. El único problema es ya dependería de
> mi implementación dichos valores de la constante, por ejemplo si la
> biblioteca cambiara en un futuro sus constantes tendría que ir revisando una
> a una todas para que fueran compatibles.

Entonces no son constantes :). Fuera de broma, cualquier API que
cambia el valor de una constante de este tipo, no merece ser usada
ya sea porque se trata de una símbolo interno o porque no se está
programando bien.

>
> Me extraña que no exista alguna forma de incluir por defecto las variables y
> macros definidas en un archivo .h

Suena como a algo interesante de implementar. ¿No te animas a hacerlo
aprovechando la facilidad y la capacidad que tiene Python para leer e
interpretar archivos de texto?

> ¿como podría ver las contantes o macros que incluye dicho .so? Porque por
> ejemplo tampoco tengo un mpi.VERSION y desconozco las que incluya el .so
>
> ¿o podria compilar de algun modo esta biblioteca para que incluyera dichas
> constantes por defecto en el .so?

Lo que Daniel te está contando es que en realidad al nombre de esas constantes
definidas como macros en un .h no llega a verlas ni el compilador C.
El preprocesador le entrega eso digerido reemplazando sus ocurrencias
por su valor
en el código fuente que genera. De manera que ni el compilador C ni el enlazador
saben de la existencia de esas macros, mucho menos podrá este último
ponerlos como símbolos en el .so de salida. La estrategia 2 que te sugiere
Daniel es justamente un workaround para esto.

-- 
Ramiro Morales



More information about the pyar mailing list