2011-06-06 82 views
1

我在應用程序中使用的兩個庫都使用zlib,這會在鏈接我的項目時導致衝突。我想在沒有zlib的情況下編譯這些庫;我想在我自己的項目中靜態鏈接zlib庫,並讓這些庫使用它。我怎樣才能做到這一點?編譯具有外部依賴項的庫

回答

1

如果兩個庫都靜態鏈接到可執行文件,並且zlib也靜態鏈接到可執行文件,那麼只需構建兩個庫,而不將它們鏈接到zlib,並在構建可執行文件時將zlib添加到鏈接程序依賴項。

如果兩個庫都是DLL,那麼您需要檢查爲什麼要從它們導出zlib符號 - 通常您應該能夠將兩個DLL鏈接到一個可執行文件,這兩個DLL使用重疊的依賴關係並且不會遇到問題來自重疊的依賴關係。

+0

我的意思是,我應該在庫的項目文件中更改哪些選項,以便它們在沒有zlib的情況下編譯。 – 2011-06-06 20:35:37

+1

假設C++(因爲您沒有聲明語言),那麼在構建庫時,您將在包含路徑中包含zlib,但不會將zlib.lib置於鏈接器依賴項中。如果您正在使用項目依賴項(同樣,假設您正在構建靜態庫),請從項目依賴項中移除zlib,但將zlib的路徑包含在編譯器的包含路徑中。 – 2011-06-06 20:52:33