Como usar una libreria hecha en C con python

¡Buenas noches! A veces un lenguaje de programación como python (aunque potente y versátil)  puedes necesitar mas potencia o accesos a librerías del sistema. Para hacer uso de una librería dinámica tipo .DLL (windows)  o .SO (linux) puedes hacerlo de la siguiente forma:

En este caso vamos a crear una librería de prueba en C para linux (el mismo codigo de C y python se puede usar en Windows).

  • Primer paso, creamos la libreria con el siguiente código de lenguaje C :
user@host:~$ cat testintegration.c
#include <stdio.h>
#include <stdlib.h>

#ifdef _WIN32
#   define DLL_EXPORT __declspec(dllexport)
#else
#    define DLL_EXPORT
#endif

DLL_EXPORT int sum(int a, int b) {
   int res = 0;
   res = a + b;
   printf("ResC: %d\n",res) ;
   return res;
}

  • Para compilarlo usamos el siguiente comando (sustituir librería por el nombre que se quiera):
user@host:~$ gcc -Wall -Wextra -O -ansi -pedantic -fPIC -shared LIBRERIA.c -o /tmp/LIBRERIA.so
  • Para usarla en este lenguaje solamente hay que llamarla importando la clase cdll del modulo ctypes, depués de usar el método LoadLibrary de la clase cdll, podremos llamar a los métodos de la librería importada:
user@host:~$ python
Python 2.7.9 (default, Jun 29 2016, 13:08:31) 
[GCC 4.9.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> from ctypes import cdll;
>>> mydll = cdll.LoadLibrary('/tmp/LIBRERIA.so')
>>> mydll.sum(2,'a')
ResC: 1456018974
1456018974

Mas información en http://wolfprojects.altervista.org/articles/dll-in-c-for-python/

1 thought on “Como usar una libreria hecha en C con python

Deja una respuesta