Nesse vídeo vamos mostrar uma forma mais fácil de criar bibliotecas para Python com C++. No outro vídeo nós vimos o processo e notamos que, de alguma forma, precisamos escrever muita coisa para criar o básico para rodar no Python.
Hoje veremos como usar o wrapper: pybind11
que torna mais fácil, em relação a código, criar bibliotecas para Python.
O endereço do repositório da pybind11 é: https://github.com/pybind/pybind11.
E nesse repositório há o link para a documentação oficial: https://pybind11.readthedocs.io/en/stable/.
Criar e ativar o venv
:
mkdir -p ~/.local/bin/venv
python -m venv ~/.local/bin/venv
. ~/.local/bin/venv/bin/activate
pip install pybind11 pytest
Clonar, compilar e instalar:
cmake -B build .
cmake --build build
sudo cmake --install build
Agora vc já pode sair e deletar o repositório clonado:
cd && rm -rf pybind11
Código exemplo: main.cpp
#include <pybind11/pybind11.h>
int add(int i, int j) {
return i + j;
}
PYBIND11_MODULE(example, m) {
m.doc() = "pybind11 example plugin"; // optional module docstring
m.def("add", &add, "A function that adds two numbers");
}
Como compilar:
g++ -Wall -shared -std=c++11 -fPIC $(python3.11 -m pybind11 --includes) main.cpp -o example.so
Testar com arquivo Python: script.py
:
import example
result = example.add(36, 90)
print(result)
Rodar:
python script.py
, possível e provável saída:126
.
Para sair do venv
digite: deactivate
.
Para mais informações consulte esse outro vídeo: Aprenda a Criar Bibliotecas pra Python com C/C++.