簡體   English   中英

為什么使用boost :: log限制鏈接

[英]Why that link limitation with boost::log

我在多個項目中使用了boost log,只是發現了一個限制,即我應該使用/構建lib的方式取決於軟件組件類型是靜態還是共享,我在這里開發了ode

該庫有一個單獨編譯的部分,應按《入門指南》中的說明進行構建。 不過,應該注意一件事。 如果您的應用程序包含多個使用Boost.Log的模塊(例如,一個exe和一個或多個dll),則該庫必須構建為共享對象。 如果您具有與Boost.Log一起使用的單個可執行文件或單個模塊,則可以將該庫構建為靜態庫。

對這個限制有解釋/理由嗎?

這是因為該庫包含具有內部鏈接和靜態存儲持續時間的對象。 將此類對象放入共享庫有助於確保在運行時此類對象沒有重復。

請注意,具有外部鏈接的靜態存儲持續時間對象不會受到此影響:如果鏈接時存在重復的定義-鏈接器在運行時會抱怨-僅使用第一個可用的定義。

暫無
暫無

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

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