quinta-feira, 3 de setembro de 2015

Criando um lib em c para ser usada no Python

Shared Objects no Python

Como gosto muito de escrever em python resolvi fazer algo parecido com o post anterior só que desta vez o python acessando uma lib em c.
Eu utilizei o modulo ctypes. O módulo ctypes provê a compatibilidade dos tipos de dados em C permitindo chamar bibliotecas, como por exemplo DDLs e shared objects.


Git:   https://github.com/crleal/python_com_c  

1 - Programa exemplo em c:

HelloWorld.c
1:  #include   
2:     
3:    double HelloWorld_dobro (int x)
4:    {
5:         printf("Metodo dobro!\n");
6:         return x * 2;
7:    }
8:    
9:    int somar(int n, int m)
10:    {
11:         return n + m;
12:    }  


2 - Compilando o HelloWorld.c:

1:  gcc -Wall HelloWorld.c -shared -fPIC -o HelloWorld_lib.so


3 - Programa em Python:


HelloWorld.py
1:  #!/usr/bin/env python
2:  
3:  import os
4:  import ctypes
5:  
6:  # Carrega a lib para uma variavel 
7:  libLocal = ctypes.CDLL("./HelloWorld_lib.so")
8:  
9:  print("A soma dos numeros:")
10:  
11:  # chama os metodos dentro da lib
12:  print(libLocal.somar(5, 6))
13:  print(libLocal.HelloWorld_dobro (5))  


4 - Executando o python:

1:  Python HelloWorld.py

Resultado:
 A soma dos numeros: 11 
 Metodo dobro! 10 

Nenhum comentário: