Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Lập Trình C

Gói (wrap) đối tượng Python trong C/C++

Dùng Boost.Python để bọc (wrap) đối tượng Python trong C/C++.

Boost.Python Library

Framework liên kết Python và C++. Cho phép expose class, hàm, object C++ sang Python và ngược lại mà không cần thay đổi code C++. Chỉ cần compiler C++.

Đặc điểm:

  • Non-intrusive: không sửa code C++ gốc.
  • Lý tưởng cho expose thư viện thứ 3 (3rd-party) cho Python.
  • Dùng metaprogramming nâng cao → cú pháp giống ngôn ngữ định nghĩa giao diện (IDL) khai báo.

Ví dụ tối thiểu

// math.cpp
#include <boost/python.hpp>
int add(int a, int b) { return a + b; }

BOOST_PYTHON_MODULE(math) {
    using namespace boost::python;
    def("add", add);
}

Biên dịch thành shared library (math.so / math.pyd), import trong Python: import math; math.add(2,3).

Thay thế hiện đại: pybind11 — header-only, C++11+, nhẹ hơn, dễ dùng hơn Boost.Python.