example.cpp
# include <pybind11/pybind11.h>
#include<iostream>
int add(int i, int j) {
return i + j;
}
int Mul(int i, int j) {
return i * j;
}
std::string mode() {
#ifdef _DEBUG
return "this is debug mode";
#else
return "this is release mode";
#endif
}
PYBIND11_MODULE(example, m) {
m.doc() = "pybind11 example plugin";
m.def("add", &add, "A function that adds two numbers");
m.def("mul", &Mul, "A function that muls two numbers");
m.def("mode", &mode, "A function that get mode is debug of release");
}
CMakeLists.txt
cmake_minimum_required(VERSION 3.14.0)
project(example LANGUAGES CXX)
add_subdirectory(pybind11)
pybind11_add_module(example example.cpp)
SET BASE_PATH=%CD%
SET BUILD_PATH=%BASE_PATH%/build
IF NOT EXIST "%BUILD_PATH%" (
md "build"
)
cmake -DCMAKE_BUILD_TYPE=Debug -G "Visual Studio 16 2019" -A x64
cmake --build .. --config Release --target ALL_BUILD
example.py
import example
print(example.add(5, 4))
print(example.mul(5, 4))
print(example.mode())