我正在編寫一個C接口到C++庫的過程,我正在尋找一些高質量的示例(或最佳實踐)。C++庫的C接口示例?
到目前爲止,這一次似乎相當有前途:http://czmq.zeromq.org/manual:czmq
任何其他建議?
我正在編寫一個C接口到C++庫的過程,我正在尋找一些高質量的示例(或最佳實踐)。C++庫的C接口示例?
到目前爲止,這一次似乎相當有前途:http://czmq.zeromq.org/manual:czmq
任何其他建議?
如果您的C++庫在Windows上寫爲COM。有一些工具可以爲它自動生成C接口。
您可以看看Parma Polyhedra Library作爲一個優秀的C接口的例子,以一個寫得很好的C++庫。 PPL是一款免費的GPL編輯軟件,特別適用於GCC編譯器。
我可以建議FTGL這是一個提供C接口的C++庫。下面是實現完全一樣的東西兩個示例程序:也
注意FTGL使用pImpl paradigm爲了實現跨版本的二進制兼容性。見here爲什麼它很好。
聲明:我是FTGL的撰稿人。
libGLU的(OpenGL實用庫)部分寫在C++:http://cgit.freedesktop.org/mesa/mesa/tree/src/glu
libzmq是一種奇怪的情況,因爲在低級別的C API原本打算像POSIX插座,絕對不是面向對象的(我們使它更加一致並且隨着時間的推移組織起來)。同時,實際的庫是用C++編寫的。
C++-to-C接口位於libzmq/src/zmq.cpp中,由一堆調用「真正」C++代碼的簡單C函數組成。另一方面,CZMQ的目標是提供更加優雅的東西,它提供了一個帶有構造函數,析構函數,容器,私有屬性等的簡單類模型。沒有任何激進但是確實將C變成了一種更優雅的語言。
我不確定CZMQ類方法如何映射到C++ API,除非該API被明確設計爲映射。
聲明:我是CZMQ大部分作者。
另一個高質量的例子是Open Dynamics Engine。它有一個C++後端和一個C前端。一切都可以C鏈接。
我正要建議ZeroMQ,很高興我通過:) –
可能重複閱讀問題:http://stackoverflow.com/q/7953559/440558 –
絕對不是該問題的重複。這個問題詢問了如何做得很好的例子(也就是如何設計基於C++ API的C API)。另一個問題完全是關於這樣做的基本機制。 –