2012-10-22 100 views
7

我無法得到SOIL與Visual Studio 2010正常工作 - 我遠離VS的專家,但據我所知只有以下步驟才能使環境工作:在Visual Studio 2010中的土壤設置

屬性>> C/C++>常規>>附加包含目錄 添加在路徑SOIL.h

屬性>>鏈接>>通用>>附加庫目錄 添加在路徑libSOIL.a

我也在使用免費的GLUT,並在這裏設置了glut文件的路徑好吧 - 我還將Dubugging >>環境路徑設置爲GLUT bin文件。

當我使用SOIL_load_OGL_texture我得到以下錯誤:

錯誤LNK2019:在函數引用解析外部符號_SOIL_load_OGL_texture 「無效__cdecl的init(無效)」(?INIT @@ YAXXZ)

試圖重命名libSOIL.a到libSOIL.lib和SOIL.lib,但它不起作用。然後,我建立了VC8項目並按照這裏建議的那樣使用.lib SOIL not linking correctly但是這也不起作用。

我使用的示例代碼從他們的主頁

GLuint tex_2d; 
tex_2d = SOIL_load_OGL_texture 
    (
     " C:\\Sunset.png", 
     SOIL_LOAD_AUTO, 
     SOIL_CREATE_NEW_ID, 
     SOIL_FLAG_MIPMAPS | SOIL_FLAG_INVERT_Y | SOIL_FLAG_NTSC_SAFE_RGB | SOIL_FLAG_COMPRESS_TO_DXT 
    ); 

/* check for an error during the load process */ 
if(0 == tex_2d) 
{ 
    printf("SOIL loading error: '%s'\n", SOIL_last_result()); 
} 

回答

5

這聽起來像你實際上並沒有在你的Properties -> Linker -> Input -> Additional Dependencies列表把SOIL.lib

的FreeGLUT頭有一些Win32-specific #pragmas在適當.lib文件,這就是爲什麼僅僅設置Additional Library Directories工作了,要拉。 SOIL沒有這些,所以你必須具體告訴鏈接器使用哪一個.lib

+0

謝謝 - 完美的作品。我知道這問另一個問題,但你知道有什麼好的地方,瞭解接頭和整個區域的(很難找到在從最基礎開始淨的好地方) –

+0

沒有特別。因爲在大多數的事情,我會在開始[百科:鏈接(計算)](http://en.wikipedia.org/wiki/Linker_%28computing%29)和去哪裏你的好奇心需要你:) – genpfault

+0

會爲做謝謝幫助! –

7

可能是一點點舊線程,我仍然會分享一些東西。

  1. http://www.lonesock.net/soil.html下載zip並解壓縮。

  2. 在您的visual studio項目中包含路徑(項目 - >屬性 - > vC++目錄 - >包含目錄),將路徑添加到Soil的「src」文件夾。 - >庫目錄的相同位置添加「lib」文件夾。 項目 - >屬性 - >鏈接器 - >輸入 - >附加依賴 - >編輯,添加「SOIL.lib」

  3. 這一步很重要,因爲人們往往重命名某文件到.LIB。不要這樣做。相反,進入「項目」文件夾,選擇一個VC *(例如VS2012的VC8) - >打開Visual Studio文件 - >它會打開使用你的視覺工作室 - >點擊確定 - >點擊確定。您的解決方案將準備就緒。

現在按F5/Run建立並運行。在做這件事時要小心,以防你的項目使用x64 Debug版本,然後在這裏選擇相同的東西,然後再構建解決方案。

  1. 將在VC *文件夾中創建文件夾/文件。進入Debug/x64(取決於您的項目),將SOIL.lib文件複製到原始的「lib」文件夾(您在步驟2中指向Visual Studio屬性中)。

在這一點上,你做。它應該工作。

+1

我真的很喜歡這個API:P。謝謝您的幫助。 –

+0

如果你只是用它來繪製從圖像紋理,你還可以使用OpenCV的讀取圖像,並繪製它。在這種情況下,您需要知道確切的圖像數據類型。 – SanD