github.com/kaydxh/golang@v0.0.131/pkg/gocv/cgo/third_path/pybind11/tests/test_cmake_build/embed.cpp (about)

     1  #include <pybind11/embed.h>
     2  namespace py = pybind11;
     3  
     4  PYBIND11_EMBEDDED_MODULE(test_cmake_build, m) {
     5      m.def("add", [](int i, int j) { return i + j; });
     6  }
     7  
     8  int main(int argc, char *argv[]) {
     9      if (argc != 2) {
    10          throw std::runtime_error("Expected test.py file as the first argument");
    11      }
    12      auto *test_py_file = argv[1];
    13  
    14      py::scoped_interpreter guard{};
    15  
    16      auto m = py::module_::import("test_cmake_build");
    17      if (m.attr("add")(1, 2).cast<int>() != 3) {
    18          throw std::runtime_error("embed.cpp failed");
    19      }
    20  
    21      py::module_::import("sys").attr("argv") = py::make_tuple("test.py", "embed.cpp");
    22      py::eval_file(test_py_file, py::globals());
    23  }