未定义引用`SOIL_load_OGL_texture'?

时间:2013-07-05 22:15:15

标签: c++ opengl soil

我不知道为什么这样说:

  

对“SOIL_load_OGL_texture

的未定义引用

这是代码:

GLuint loadtex( const char* texname )
{
    GLuint texture = SOIL_load_OGL_texture(
                                              texname,
                                              SOIL_LOAD_AUTO,
                                              SOIL_CREATE_NEW_ID,
                                              SOIL_FLAG_MIPMAPS | SOIL_FLAG_INVERT_Y | SOIL_FLAG_NTSC_SAFE_RGB | SOIL_FLAG_COMPRESS_TO_DXT
                                              );
    glBindTexture( GL_TEXTURE_2D, texture );
    glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR );
    glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR );
    return texture;
}

我有

#include <SOIL.h>

4 个答案:

答案 0 :(得分:7)

事实证明,在链接 libopengl32 之前,您必须链接 libSOIL 。因此,例如:
g++ -g source.cpp -lglu32 -lSOIL -lopengl32 -lfreeglut将起作用,但最后将 libSOIL 留下将导致上述错误。

答案 1 :(得分:5)

查看“Simple OpenGL Image Library / projects / makefile”,然后创建一个名为“obj”的目录。现在从命令行运行“make”,其中makefile是,然后是“make install”。那应该安装库和头文件。现在尝试编译;它对我有用。如果您收到有关libm的任何错误,只需在链接选项中添加“-lm”。

答案 2 :(得分:1)

未定义的引用意味着您需要将土壤库链接到您的应用程序。有不同的方法,它取决于您使用的平台和编译器。在Linux上,您需要向链接器标志添加类似-lsoil的内容。

答案 3 :(得分:0)

你必须链接到SOIL库:

g++ -o output your-source.cpp -lSOIL

SOIL必须采用上限