2013-02-07 54 views
4

我需要在我的項目中使用SOIL lib。如何將靜態庫(SOIL)鏈接到visual studio 2010中的項目?

我在我的源文件中包含SOIL.h和libSOIL.a(將其重命名爲libSOIL.lib)。

我已經將頭文件作爲現有項目添加到頭文件中,並將頭文件包含在我需要的另一個頭文件中。

我也試過了: 項目屬性> Linker> Input> Additional Dependencies,然後在下拉菜單中點擊「< Edit ..>」並鍵入libSOIL.lib。

但我得到這些錯誤:

看看下面(更新錯誤)

我該怎麼辦?

編輯#1:

這是我在做什麼:

#include "gl/glut.h" 
#include "SOIL.h" 

我有兩個文件在我的源目錄。

沒有任何從SOIL編寫的代碼生成成功。

有了這個代碼:

/* load an image file directly as a new OpenGL texture */ 
GLuint grass_texture = SOIL_load_OGL_texture 
(
    "original.bmp", 
    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 == grass_texture) 
{ 
    printf("SOIL loading error: '%s'\n", SOIL_last_result()); 
} 

我收到此錯誤:

Error 1 error LNK2019: unresolved external symbol __alloca referenced in function _stbi_zlib_decode_noheader_buffer working_dir\libSOIL.lib(stb_image_aug.o) ProjectName

Error 2 error LNK2019: unresolved external symbol _sqrtf referenced in function _RGBE_to_RGBdivA2 working_dir\libSOIL.lib(image_helper.o) ProjectName

Error 3 error LNK1120: 2 unresolved externals working_dir\Debug\ProjectName.exe ProjectName

+1

也許這會幫助你:http://stackoverflow.com/questions/9629349/soil-not-linking-correctly – mfc

+0

@mfc:我用新的錯誤代碼更新了我的問題。這是否改變你的回覆? – Chris

+0

LNKxxxx錯誤表明錯誤來自鏈接器,代碼編譯正常,但鏈接器無法找到外部庫中的所有二進制部分(代碼和變量)。也可能是LIB文件的路徑。上面鏈接中的文章表示,他使用「SOIL.lib」而不是「libSOIL.lib」並解決了問題。 – mfc

回答

0

嘗試包括第一你SOIL.h.之前的OpenGL

+0

我編輯了一些額外的信息我的問題。我按照你的說法行事,但當我使用土壤代碼時沒有運氣。 – Chris

0

這些庫使用

include windows.h

之前,因爲你是在Windows上工作。你的問題將得到解決。

1

我遇到了同樣的問題。我的解決方案是轉到projects/VCX文件夾並自己編譯解決方案,然後將生成的.lib文件複製到我的項目中。編譯解決方案時,請確保選擇正確的平臺(X86/X64)。還要確保包含.lib文件的路徑可以在您的項目中找到。

相關問題