2010-06-10 34 views
0

我不確定我是否正在以正確的方式進行操作。我正在做2個應用程序中使用的一些C++類。我將不得不編譯它們才能在Cocoa應用程序中使用,然後將其編譯爲與fastcgi一起使用。如何爲2個項目使用cpp源碼

我應該創建一個動態庫嗎?

回答

3

不要忘記,你也有靜態庫作爲選項。在一些平臺上,動態庫會帶來一堆惱人的行李。他們也稍慢(儘管這通常在旁邊)。如果不重新編譯程序,它們也不能被替換(您可能更關心Web環境中的這一點)。最後,當你只在一臺計算機上運行其中一個程序時,通過使lib動態變得沒有任何意義......而只有兩個程序時沒有什麼變化。

+0

那麼,如果我創建一個靜態庫,它將包含編譯的可執行文件?然後我會包含頭文件?這將允許我將libs和頭文件包含在我的應用程序項目中? – joels 2010-06-10 16:37:24

+0

那麼,靜態庫通常是不可執行的,但它們將包含你放入它們的東西的編譯目標代碼。其餘的問題可以得到肯定回答。 – 2010-06-10 16:51:18

+0

「編譯目標代碼」就是我的意思。謝謝。 靜態庫聽起來很像xcode中的Framework。當我在xcode中創建一個框架時,框架文件就像一個文件夾/包,它有一個Headers文件夾作爲公共頭文件。當我在Xcode中創建靜態庫時,它會創建一個.a文件。 當我想使用lib時,如何包含頭文件?我是否只包含lib和任何頭文件? 的#include libTest.a 的#include MyClass.h – joels 2010-06-10 17:23:22

0

如果你想分享項目中多個C++類,你通常應該將它們放在一個類庫。雖然不熟悉可可。

+0

什麼文件擴展名是類庫? – joels 2010-06-13 00:39:53

5

如果源文件都必須使用不同的條件編譯設置編譯兩個應用程序一起工作,你最好發運源和應用程序本身編譯它一起。

否則,您可以創建一個庫,並將編譯版本,以與標頭的應用程序的編譯一起。圖書館是否應該動態取決於你的情況。如果您不需要單獨更新庫而不重新編譯可執行文件,則簡單的靜態庫可能是更好的選擇。

0

如果你有很多類,那麼共享庫。確保只使用抽象類並且在公共頭文件中沒有代碼(模板是OK的)。提供工廠(或普通函數)來實例化對象。

如果這聽起來像太多編碼你的話,好,現代的版本控制使得它相當輕鬆了一些項目,以簡單地重新使用這些文件,住在同一個存儲庫中。

P.S.另一個要考慮的因素是有多少人在這個項目上工作。共享庫是一項額外的責任。如果你有一個人來照顧它,那麼從組織的角度來看,這可能是值得的。

相關問題