2012-02-10 238 views
2

我被告知by some of您不久前已經將FreeImage用作C++中的圖像處理庫。讓FreeImage與Visual Studio 2010一起工作

我現在在使圖書館工作上有些麻煩(這裏還是比較新的)。

我試過加載各種vcxproj和sln瓷磚,他們給了我一個空白的項目。由於沒有提供任何安裝說明,我放棄了將其製作爲視覺工作室解決方案。

接下來我嘗試了使用Makefile編譯源代碼並向鏈接器添加「FreeImage/Source」的舊式方式。當我調用FreeImage.h中聲明的函數時,IDE不會引發任何紅色標記,但在編譯期間,它給了我一堆「錯誤LNK2019:無法解析的外部符號」,就好像函數不存在一樣。我懷疑是IDE找不到定義上述函數的.cpp文件,但是當我將FreeImage/Source/FreeImage添加到鏈接器時,我仍然遇到同樣的問題。

現在,當我直接包含一些.cpp文件(即Plugin.cpp和FreeImage.cpp)進行測試時,我得到了更多未解析的外部符號錯誤以及諸如「不一致的dll連接」 ...例如FreeImage.cpp:

const char * DLL_CALLCONV FreeImage_GetVersion() { static char s_version[16]; sprintf(s_version, "%d.%d.%d", FREEIMAGE_MAJOR_VERSION, FREEIMAGE_MINOR_VERSION, FREEIMAGE_RELEASE_SERIAL); return s_version; }

所以,我完全卡住。我究竟做錯了什麼?我覺得我已經遵循了適當的步驟來添加庫依賴項,比如在C/C++ - > General - > Additional Included Directories and Linker - > General中添加直接父項的特定文件夾到相關的.h和.cpp文件 - >添加庫目錄。

一些幫助將不勝感激!

+0

「我試過加載各種vcxproj和sln瓷磚,他們給了我一個空白的項目。」你能澄清一下嗎? VC2010究竟說了些什麼? – 2012-02-10 10:03:34

+0

VC2010將完成轉換過程,然後完成後,我會看到一個解決方案,其中包含一系列項目(即FreeImage,LibPng等),其中每個項目都是空的 - 沒有標題,沒有源,zilch。 但是,你有沒有對我的任何建議,試圖簡單包括庫文件夾?正如我所描述的,VC也給我提出了一些問題。 – 2012-02-10 20:34:08

+0

這個問題似乎與DLL有關(我是一個新的C++用戶 - 他們喜歡.jar文件嗎?)。錯誤LNK2019消息實際上是「未解析的外部符號__imp __ [插入函數名稱]錯誤,並且Google告訴我__imp__暗示函數是從.dll(一些C++版本的.jar文件?)導入的。我通過FreeImage.h進行挖掘看到一些線,如 '#ifdef來FREEIMAGE_EXPORTS \t的#define DLL_API __declspec(dllexport)的' 和有LNK錯誤看起來像 'DLL_API FIBITMAP * DLL_CALLCONV FXN()' 我不知道這些瓦爾是如何分配的fxns值。 – 2012-02-11 00:35:08

回答

3

使用FreeImage v3.15.3我沒有任何問題將VS2008項目轉換爲VS2010。 此外,建築按預期工作。但是當我鏈接到靜態庫時,我得到了一些未解決的外部問題。首先我嘗試了一些設置/ MT/MD鏈接的技巧,但是這並沒有解決這些鏈接問題。

閱讀了一些新手的評論後,我挖進了freeimage.h。在那裏我找到了一個控制函數調用約定的宏開關FREEIMAGE_LIB。 在包含freeimage.h文件之前,使用#define FREEIMAGE_LIB。這樣,你可以很容易地靜態鏈接到FreeImage.lib

相關問題