Cómo llamar a una función de C en Python

¿Alguna vez te has encontrado con la situación en la que tienes que llamar a la función C usando python? Este artículo te va a ayudar en un nivel muy básico y si no te has encontrado con ninguna situación como esta, te gustará saber cómo es posible.
Primero, escribamos una función simple usando C y generemos una biblioteca compartida del archivo. Digamos que el nombre del archivo es function.c. 

C

int myFunction(int num)
{
    if (num == 0)
 
        // if number is 0, do not perform any operation.
        return 0;
    else
        // if number is power of 2, return 1 else return 0
          return ((num & (num - 1)) == 0 ? 1 : 0) ;
 
}

Compile esto: 

cc -fPIC -shared -o libfun.so function.c

Uso de la biblioteca ctypes (interfaz de funciones externas) para llamar a la función C desde Python

La declaración anterior generará una biblioteca compartida con el nombre libfun.so. Ahora, veamos cómo usarlo en python. En python, tenemos una biblioteca llamada ctypes. Usando esta biblioteca podemos usar la función C en python. 
Digamos que el nombre del archivo es function.py. 
 

Python3

import ctypes
NUM = 16     
# libfun loaded to the python file
# using fun.myFunction(),
# C function can be accessed
# but type of argument is the problem.
                        
fun = ctypes.CDLL("libfun.so") # Or full path to file 
# Now whenever argument
# will be passed to the function                                                       
# ctypes will check it.
           
fun.myFunction.argtypes = [ctypes.c_int]
 
# now we can call this
# function using instant (fun)
# returnValue is the value
# return by function written in C
# code
returnVale = fun.myFunction(NUM)       

Publicación traducida automáticamente

Artículo escrito por srishti verma y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *