2017-09-07 21 views
7

Tôi đang cố gắng bọc một thư viện C++ bằng pybind11 để tôi có thể sử dụng nó với Python 3.x.pybind11 gói mã hiện tại

Tôi đã thử gói mã bằng swig, nhưng tôi gặp phải vấn đề mà SWIG sẽ tạo tệp cxx, nhưng không đọc tiêu đề tôi đã tham chiếu, vì vậy tôi đã sử dụng pybind11 vì nó tốt hơn swig (đây là ý kiến ​​tôi biết), nhưng tôi gặp khó khăn khi tìm tài nguyên về cách tôi có thể tham khảo/xây dựng dự án.

môi trường của tôi là:

  • Windows 10 x64
  • Anacondas xây dựng 4.4.0 với Python 3.6
  • Visual Studio 2015 Professional (C++ cài đặt)

Khi tôi tạo ra giao diện của tôi tệp cho Swig, tôi có thể làm điều gì đó dễ dàng như:

`` `

%module filegdbapi 

%{ 
#include "FileGDBAPI.h" 
%} 

%include "FileGDBAPI.h" 

`` `

Sau đó trên uống một lân xây dựng, tôi có thể tham khảo các -I đến vị trí của các tập tin .h.

Làm cách nào để làm điều gì đó như thế này trong pybind11? Nó đơn giản sao?

Tài liệu cho pybind11 luôn hiển thị trình bao bọc xây dựng khi bạn có tệp .cpp. Tôi có thể sử dụng pybind11 theo một cách mà tôi có thể xây dựng một wrapper với swig? Nếu vậy, làm thế nào để bạn thiết lập các tập tin?

Ai đó có thể chỉ cho tôi một dự án chỉ tạo ra trình bao bọc python từ mã C++ hiện có?

Cảm ơn bạn

Trả lời

0

Mặc dù có cùng mục đích, SWIG và Pybind11 là các công cụ khác nhau.

Như tên ngụ ý, SWIG (Trình đơn giản hóa và giao diện Máy phát điện) là công cụ tạo ra ràng buộc Python cho mã C++ hiện có, sử dụng các định nghĩa được viết bằng ngôn ngữ đặc biệt. Mặt khác, Pybind11 là thư viện C++ chỉ tiêu đề kết thúc tốt đẹp API Python-C thô (đó là kiểu C cũ và có đường cong học tập dốc) và cho phép viết các ràng buộc Python trong C++ hiện đại. Nhưng bạn viết những ràng buộc mình bằng tay, bằng cách sử dụng bất cứ thực thể C++ (chức năng, lớp học, mẫu, vv) mà không gian tên pybind11:: cung cấp.

Các vấn đề liên quan