2011-05-27 19 views
3

我正在使用SDL開發一個項目。我覺得我的很多代碼可以/應該可以重用於任何其他可能需要執行的項目。在另一個庫(SDL和Eclipse)上建立一個新庫

我要開始一個庫項目,但我不知道如何去鏈接到SDL庫。

通常情況下,我去項目設置和編輯MINGW32鏈接程序包括庫(ming32,SDLmain和SDL)。但鏈接器不顯示在設置中。

所以我的問題:

有沒有連接設置,因爲建立一個庫只是一個編譯操作?

而在一般情況下,是有可能建立在現有的庫頂部的圖書館嗎?也就是說,使用SDL函數和stucts編寫我的庫。或者我必須獲得源代碼並完全用我的代碼進行重建?

此外,在這種情況下,共享與靜態建議?

回答

2

作爲介紹,你必須很好靜態庫從動態的區別,他們是完全不同的野獸......說,你的問題:

是否沒有鏈接器設置,因爲構建庫只是一個編譯操作?

我猜你是創建在這種情況下靜態庫。靜態庫僅僅是組成源代碼樹的所有單個目標文件(即由編譯器生成的.o文件)的單個目標文件中的集合。沒有更多,不少。

對於靜態庫,不需要指定哪些是依賴關係,因爲它被理解爲編譯最終可執行文件時,庫將與所依賴的所有其他庫鏈接。因此只有在那個時候(最終的可執行版本)才能檢測到任何缺失的符號,並且所有其他庫必須可用。

共享庫(也動態庫),是嵌入所有它取決於靜態庫的可執行文件。它也可以具有與其他共享庫的外部依賴關係,這不會被嵌入。

而且一般情況下,是否可以在現有的庫上建立一個庫?也就是說,使用SDL函數和stucts編寫我的庫。或者我必須獲得源代碼並完全用我的代碼進行重建?

這是完全可能的,無論是靜態和動態庫。

此外,在這種情況下的共享與靜態建議?

在這種情況下不可能建議,因爲您沒有指定足夠的信息。 看看這個:When to use dynamic vs. static librariesthis,有一個指導方針。

我認爲上面的兩個鏈接給你足夠的信息(此外,對於哪裏去學習更多的編譯器和鏈接以及此類的任何建議。我通過數據結構中的學校,但沒有更遠了) 。如果你想深入細節,你可以從this wikipedia article開始並從那裏瀏覽。

+0

+1爲您的答案中的SO參考。 – karlphillip 2011-05-27 17:14:57

2

你正在建設存在外部依賴性庫(同樣,任何忠告何處去學習更多的編譯器和鏈接和這樣的,我通過在學校的數據結構,但沒有更遠了)。這意味着您可以將其與SDL或任何其他您喜歡的外部庫鏈接。

我覺得這頁解釋了所有的其他問題:DLL Creation in MingW

+0

靜態與動態庫:http://stackoverflow.com/questions/784781/static-libraries-dynamic-libraries-dlls-entry-points-headers-how-to-get-o – karlphillip 2011-05-27 15:57:07

+0

DLL信息:http:///stackoverflow.com/questions/124549/dll-information – karlphillip 2011-05-27 15:57:37

相關問題