2009-06-22 23 views
4

我想編寫一個庫,它將與運行在Windows,Linux和OS/X等現代操作系統上的其他程序(即它將被部署爲.dll.so模塊)動態鏈接。便攜式庫的語言選擇

這種情況下最合適的語言是什麼?我應該堅持純C嗎?或者C++也可以嗎?

回答

14

您可以使用C或C++進行實現,但我會建議在純C中定義接口。它將更容易集成。

+0

也讓人們消費圖書館的自由選擇最適合他們的東西。 – ojblass 2009-06-22 01:12:21

+0

是的。很少有人反對OpenGL ES直C界面的想法。但是Objective-C程序員可能根本不會挖掘C++接口。 – Nosredna 2009-06-22 01:14:10

0

我會說C是最可預測的便攜式,但C++是可行的。

1

我也會說C是最低公分母。如果與調用應用程序更好地集成,您總是可以選擇將C++包裝器編寫到核心庫。

0

考慮最低公分母的因素,讓圖書館的消費者做出最適合他們的決定。 extern c的構造可能仍然會讓一些人感到困惑,並且你希望你的圖書館能夠遠距離接觸最廣泛的受衆。絕對使界面純粹c。如果您避免使用一些較暗的角落(如STL),則可以使用C++。 C是最便攜的酒吧沒有。爲所有可用的平臺創建庫不是一件容易的事,因此請務必查看here以獲取一些提示。你可能也想考慮使用autoconf等。

2

創建以二進制形式分發的C++庫的難度在於,您的客戶 - 庫的用戶 - 通常被限制爲使用與創建庫相同的C++編譯器。如果你想保持最新,他們沒有,或者如果他們想保持最新,而你不想,那麼這可能會有問題。如果您使用源代碼進行交易,那麼只要您的C++具有足夠的可移植性,以便它可供您的客戶使用的所有編譯器使用,就不會有問題。

如果代碼可能來自C,我可能會編碼到C接口。或者,提供兩個接口 - 本地C++接口和C接口。但是,這不僅僅是一個C接口。另一方面,C++接口(也許使用STL迭代器等)可能會帶來好處,並可能影響您的決定。