Boa noite! Por vezes uma linguagem de programação como python (embora poderosa e versátil) pode necessitar de mais potência ou acesso a bibliotecas de sistemas. Para fazer uso de uma biblioteca dinâmica como .DLL (windows) ou .SO (linux), pode fazê-lo da seguinte forma:
Neste caso, vamos criar uma biblioteca de testes em C para linux (o mesmo código C e python pode ser usado no Windows).
- Primeiro passo, criamos a biblioteca com o seguinte código de linguagem 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 a compilar usamos o seguinte comando (substituir biblioteca pelo nome da sua escolha):
user@host:~$ gcc -Wall -Wextra -O -ansi -pedantic -fPIC -shared LIBRERIA.c -o /tmp/LIBRERIA.so
- Para o utilizar nesta língua, basta chamá-lo importando a classe cdll do módulo ctypes, após utilizar o método LoadLibrary da classe cdll, será possível chamar os métodos da biblioteca 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
Mais informações em http://wolfprojects.altervista.org/articles/dll-in-c-for-python/