如果應用程序與某些庫的boost以及另一個使用boost編譯鏈接的庫鏈接,是否可能存在類似ODR的問題?增強庫的多重鏈接
例子: foo.exe
與boost-*.lib
和bar.lib
鏈接,以前編譯bar.lib
當它是鏈接與boost-*.lib
了。
庫按照MSVC構建爲多線程。
如果應用程序與某些庫的boost以及另一個使用boost編譯鏈接的庫鏈接,是否可能存在類似ODR的問題?增強庫的多重鏈接
例子: foo.exe
與boost-*.lib
和bar.lib
鏈接,以前編譯bar.lib
當它是鏈接與boost-*.lib
了。
庫按照MSVC構建爲多線程。
我有一個類似的問題與libcURL和OpenSSL與靜態鏈接。 libCURL庫使用OpenSSL進行https下載,並且在編譯時需要鏈接到OpenSSL。我的觀察是:
我推薦的是你試圖鏈接到bar.lib
沒有這個boost庫,看看它是否工作。如果它編譯,沒有它,你就很好。如果你得到一個未定義的引用錯誤,那麼你需要鏈接到它。這是最糟糕的情況。
在同一個進程中混合Boost的多個版本(包括只有頭文件的庫)總是一個壞主意。 Boost不提供API和ABI保證,如果兩個不同的版本彼此接觸,則會導致內存損壞,甚至更糟糕。
你是指什麼類型的圖書館?靜態還是動態(DLL)?靜態庫沒有鏈接概念。 – SergV
我問靜態庫 –