2011-11-04 57 views
12

Tôi đang trong quá trình viết giao diện C vào thư viện C++ và tôi đang tìm một số ví dụ chất lượng cao (hoặc các phương pháp hay nhất).Ví dụ về giao diện C với thư viện C++?

Cho đến thời điểm này có vẻ khá hứa hẹn: http://czmq.zeromq.org/manual:czmq

Bất kỳ đề xuất nào khác?

+0

Tôi vừa định khuyên ZeroMQ, vui vì tôi đọc những câu hỏi thông qua :) –

+0

có thể trùng lặp: http://stackoverflow.com/q/7953559/440558 –

+0

Chắc chắn không phải là một bản sao của câu hỏi đó. Câu hỏi này yêu cầu các ví dụ về cách thực hiện tốt (nghĩa là, cách thiết kế API C dựa trên API C++). Đó là câu hỏi khác là chỉ quan tâm đến cơ học cơ bản của làm điều đó cả. –

Trả lời

0

Nếu thư viện C++ của bạn được viết là COM trên Windows. Có các công cụ để tự động tạo giao diện C cho nó.

1

Bạn có thể xem xét Parma Polyhedra Library làm ví dụ về giao diện C tuyệt vời cho một thư viện C++ được viết tốt. PPL là một phần mềm GPL-ed miễn phí, đáng chú ý được sử dụng bên trong trình biên dịch GCC.

0

Tôi có thể đề xuất FTGL thư viện C++ cung cấp giao diện C. Dưới đây là hai chương trình mẫu mà đạt được chính xác những điều tương tự:

Cũng lưu ý rằng FTGL sử dụng pImpl paradigm để đạt được khả năng tương thích nhị phân trên các phiên bản. Xem here lý do tại sao nó tốt.

Tuyên bố từ chối trách nhiệm: Tôi là cộng tác viên của FTGL.

0

libzmq là một loại trường hợp kỳ lạ kể từ khi C API cấp thấp ban đầu có nghĩa là để trông giống như ổ cắm POSIX, và tuyệt đối không hướng đối tượng (chúng tôi làm cho nó phù hợp hơn và được tổ chức theo thời gian). Trong khi đó thư viện thực sự là trong C + +.

Giao diện C++ - tới-C nằm trong libzmq/src/zmq.cpp và bao gồm một loạt các hàm C đơn giản gọi là mã C++ 'thực'. Mặt khác, mặt khác CZMQ hướng đến một thứ gì đó sang trọng hơn, cung cấp một mô hình lớp đơn giản với các nhà xây dựng, destructors, container, tài sản cá nhân, ... Không có gì triệt để nhưng lại biến C thành một ngôn ngữ thanh lịch hơn nhiều.

Tôi không chắc chắn cách tiếp cận lớp CZMQ sẽ ánh xạ tới API C++ trừ khi API đó được thiết kế rõ ràng để được ánh xạ.

Tuyên bố từ chối trách nhiệm: Tôi là tác giả của hầu hết CZMQ.