2010-06-02 134 views
2

我試圖添加PNG支持到我的應用程序,因此我想包括libpng。我知道它需要zlib,因此我也下載了它。我進入了png文件夾/ p​​rojects/vstudio,然後我打開了解決方案。我編譯它,它很好。我添加了一些頭文件到我的應用程序中,並複製了lib文件。我的程序是一個用C++編寫的dll,後來在C#中使用。當我用C#運行它時,它抱怨沒有找到我的dll(如果我刪除了png部分,它很好用)。我以前遇到過這個問題,通常意味着dll依賴項是錯誤的。
現在... libpng編譯了一些.lib文件和一些.dll文件。該dll文件更大。我唯一的猜測是,它需要DLL文件,但我已經看到,人們可以鏈接到libpng沒有DLL。
所以我的問題是:我如何編譯libpng(和zlib的那個實例)到靜態庫中,我怎樣才能將這些包含在我的項目中?我在互聯網上搜索過,找不到任何有用的東西。與Visual Studio 2010靜態libpng鏈接

回答

3

爲了使所有的庫都是靜態的,你必須重新編譯一切「從零開始」作爲靜態庫。

這只是意味着你應該建立在你的序列你有每個庫的一組項目,輸出類型設置爲靜態庫

之後,您應該消除庫本身之間的庫依賴關係(這意味着您應該將某些項目的輸出鏈接到另一個項目,例如如果您的「libpng」庫使用「libzip」,這意味着您應該先編譯「libzip」和鏈接輸出(靜態庫)到你的「的libpng」項目。

在快結束的時候,你將有一個大集編譯平臺,你可以在你的項目中使用靜態庫的。


另外要提一下,請仔細閱讀Google搜索。我確定有人有這樣做,你可能需要爲你的平臺下載一個.lib文件包(我知道「dev」庫包只包含一個導入庫與適當的.dll配對文件,但有很多像你這樣的愛好者:)

+0

真正重新編譯這個東西並不難 - 創建一個項目,添加所有文件。沒有更多的問題與不同的運行時版本或類似的東西。 – sharptooth 2010-06-02 10:59:54

+1

那麼,嘗試通過「創建項目和添加文件」來完全構建'gtkmm';)*有時候所有這些內部依賴關係都可能成爲真正的屁股疼痛* – 2010-06-02 11:05:16

+0

也許,但是我們毫無麻煩地構建zlib和SQLite。 – sharptooth 2010-06-02 12:41:04