2013-02-07 57 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文件的路径可以在您的项目中找到。

相关问题