簡體   English   中英

使用未定義符號構建庫 (C++)

[英]Building a library with undefined symbols (C++)

對於 C++ 中的項目/產品,我有以下線性依賴樹:

Product <- C <- B <- A

A, BC分別構建。 A,BC鏈接在最終Product ,並且工作正常。

現在,當我用 nm 檢查例如C時:

http://linux.about.com/library/cmd/blcmdl1_nm.htm

自從我第一次組裝所需的依賴樹鏈接在一起的Product以來,我得到了一堆未定義的符號。

是否有任何約定,lib 必須始終定義其所有符號(意味着在部署之前必須將依賴項鏈接到使用 lib 中)? 或者在更高級別部署與其依賴項鏈接在一起的“裸”庫是否可以接受?

來自 Windows 世界:

我見過在公司內部使用過的。 將代碼庫分成幾個靜態庫,並根據每個產品的需要以不同的組合將它們鏈接在一起。

我也在公共 SDK 中看到了它,其中的功能在幾個 DLL 之間划分,其中一些相互依賴,其他是可選的,具體取決於您需要什么功能。

對我來說這似乎並不奇怪。

我也看到了。 這發生在許多遺留軟件中。 該庫在開始時可能設計得很好,然后后來制作了一些軟件模塊,事情變得有點草率。 這一切都可以編譯和運行,但這些庫並沒有完全封裝它們最初所做的任何一組功能。

這是一個商業決策。 要修復它,可能需要大量的工作和重新測試才能最終得到相同的產品。 隨着時間的推移,在有意義的地方慢慢重構庫會更有意義……或者在下一個主要功能版本影響庫時完全替換它們。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM