2013-04-24 44 views
8

我需要一個圖像庫,我一直在研究FreeImage,http://freeimage.sourceforge.net/。 我想靜態鏈接到我的應用程序。將FreeImage鏈接爲VS2010中的靜態庫?

我已經嘗試下載二進制文件並將其鏈接,但當我嘗試調用它們的函數時,我獲得了2019年鏈接程序錯誤,儘管我是正面的,我將它鏈接正確。

然後我試着下載他們的源代碼,將其「FreeImageLib.2008」轉換爲VS2010並構建它。它自己構建得很好,但在鏈接時仍存在同樣的問題,使用它的應用程序仍然抱怨鏈接器錯誤。

我還設置所有的項目配置,以配合我的其他項目,所以與/ MDD或/ MTD等沒有衝突..

我確實在他們的來源了一些挖掘,也有像「FREEIMAGE_LIB宏「這表明它應該在構建靜態庫時進行定義,並且已經定義,但仍然無法工作。

我已經搜索並找不到任何可靠的答案。 Getting FreeImage to work with Visual Studio 2010的答案沒有區別;我已經在包含頭文件之前定義了宏,或者作爲預處理器參數來定義它,但是它的dosnt工作。

這個庫不是用來作爲一個靜態庫,或者可能是什麼問題? 有沒有人能夠在VS2010 +上靜態鏈接FreeImage?

謝謝

回答

11

是的,我已經能夠在幾個Visual Studio版本上靜態鏈接FreeImage。在這裏我描述了我通常如何做到這一點。

隨着FreeImage的,默認情況下,我們有8個選項,將其鏈接到您的應用程序:

的FreeImage - 動態鏈接(你需要的DLL)。

FreeImageLib - 靜態鏈接。

這些都可以使用「Debug」或「Release」配置以及Win32或Win64平臺構建。

所以,假設我們需要(靜態& &的Win32 & &調試)和(靜態& &的Win32 & &釋放)爲我們的應用程序變種。此外,在我們的應用程序,我們使用動態運行時庫(默認情況下,FreeImage的設立靜態出於某種原因) 通常我們是怎樣得到它:

  • 下載並解壓新版本(或者至少清理舊distib)

  • 打開FreeImage.2008.sln使用Shift +單擊選擇10個項目中的所有項目。然後在「項目屬性/ C++ /代碼生成」中,我們選擇/ MDd作爲「調試」配置,/ MD作爲「發佈」。

  • 然後我們進入 「菜單/構建/批量構建」,選擇:

    FreeImageLib | Debug | Win32

    FreeImageLib | Release | Win32

,然後按 「生成」。

  • 等待選擇構建的配置。所有我們需要的將在FreeImage\Dist文件夾

  • 被複制在FreeImage\Dist文件夾檢查文件: delete.me FreeImage.h FreeImage.lib FreeImaged.lib 檢查創建日期和時間。它必須是新鮮烘烤和熱的。如果不是,請從FreeImage\Source\FreeImageLib\DebugFreeImage\Source\FreeImageLib\Release複製它們。

  • 在主要應用程序中添加以包含和lib FreeImage\Dist和鏈接FreeImaged.lib調試配置和FreeImage.lib到版本。
  • 包含在源文件:

    #define FREEIMAGE_LIB

    #include "FreeImage.h"

  • 嘗試調用 FreeImage_Initialise(); FreeImage_DeInitialise();

  • 它應該工作

快樂編碼!

+0

爲我工作。在其他人(Magick ++,OIIO)中,FreeImage是最容易實現的。 – pelesl 2015-03-01 23:44:52