簡體   English   中英

Boost庫的多重鏈接

[英]Multiple linkage of boost libraries

如果應用程序與一些boost的庫鏈接,而另一個應用程序通過boost的鏈接編譯,是否會出現像ODR這樣的問題?

示例: foo.exeboost-*.libbar.lib ,以前在編譯bar.lib時也與boost-*.lib鏈接。

就MSVC而言,庫構建為多線程的。

我在使用靜態鏈接的libcURL和OpenSSL中遇到了類似的問題。 libCURL庫使用OpenSSL進行https下載,並且在編譯時需要鏈接到OpenSSL。 我的觀察是:

  • 如果將libcURL鏈接到OpenSSL,則當它使用libCURL時,無需將程序鏈接到OpenSSL
  • 如果將libcURL鏈接到OpenSSL,並且還將程序鏈接到OpenSSL,則MSVC將抱怨存在多個沖突的實現。

我建議您嘗試在沒有該Boost庫的情況下鏈接到bar.lib ,然后查看它是否有效。 如果可以編譯,那么沒有它,你會很好。 如果收到未定義的參考錯誤,則需要鏈接到它。 那是最壞的情況。

在同一過程中混合多個版本的Boost(包括僅包含標頭的庫)總是一個壞主意。 Boost既不提供API也不提供ABI保證,如果兩個不同的版本相互接觸,則可能會導致內存損壞甚至更糟。

暫無
暫無

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

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