من خودم pybind11 استفاده می کنم و خیلی راضی هستم کار کردن هم باهاش نسبت به cython خیلی ساده است. در ابتدا pybind11 را با pip نصب کنید.
فرض کنید یک پروژه کتابخانه c++ در vs دارید و بخاید یک ماژولی به نام add (جمع تو پارامتر ورودی را محاسبه می کنه) از کتابخانه را سمت python استفاده کنید.
1- فلدر site-packages مربوط به env یا پایتون را پیدا کنید و فلدر کتابخانه را به آن اضافه کنید فرض کنید Test1.
2-Output Directory پروژه را برابر با فلدر بالا قرار بدید.
3- Target Nameرا برابر با Test1 قرار بدید.
4-Target Extension را برابر با .pyd قراربدید.
4-1 . Configuration Type را برابر با Dynamic Library (.dll) قرار دهید.
5- به هدری که تابع add در آن تعریف شده
#include <pybind11/pybind11.h>
را اضافه کنید.
6- به صورت ماژول مورد نظر خودتون بایندر بسازید.
PYBIND11_MODULE(Test1, m) {
m.doc() = "pybind11 example plugin"; // optional module docstring
m.def("add", &add, "A function which adds two numbers");
}
7- پروژه را بیلد کنید فایل test1.pyd درsite-packages \test1 ایجاد میشه.
8- یک فایل پایتون ایجاد کنید.
9- به صورت زیر از ماژول addاستفاده کنید.
from Test1 import Test1
print( Test1.add(1,2))