Repositório com a criação de shared libraries de C++ para Python.
Criar um arquivo .cpp com as funções que se quer exportar da seguinte forma:
extern "C" type functionName(type param, ...) {
...
}Roda-se o seguinte comando para compilar esse arquivo em um shared object:
g++ -shared -FPIC -o lib.so lib.cpp
# ou esse, caso clone esse repo
make buildMostrarei duas formas de fazer o resto do processo:
- Usando a biblioteca ctypes
- Usando a biblioteca cffi
import ctypes
lib = ctypes.CDLL('./lib.so')from cffi import ffi
ffi = FFI()
lib = ffi.dlopen('./lib.so')# Usando CFFI
ffi.cdef("""
void showNumbers(int n1, int n2);
void subNumbers(int n1, int n2);
""")
# Então pode-se chamar as funções
lib.showNumbers(1, 2)
lib.subNumbers(17, 4)
# ------------------------------------------------------- #
# Usando ctypes
lib.showNumbers.restype = None
lib.showNumbers.argtypes = [ctypes.c_int, ctypes.c_int]
# Então pode-se chamar as funções
lib.showNumbers(1, 3)