对 `SOIL_load_OGL_texture` 的无法定义的引用?

3

我不知道为什么会一直出现这个错误:

undefined reference to "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;
}

I have

#include <SOIL.h>
4个回答

8

原来在连接libopengl32之前,您必须先连接libSOIL。因此,例如:
g++ -g source.cpp -lglu32 -lSOIL -lopengl32 -lfreeglut将起作用,但是将libSOIL放在最后会导致上述错误。


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

我已经做了那个,但即使如此,我还需要指定链接器和包含选项吗? - bad_keypoints

1

“未定义引用”意味着您需要将Soil库链接到应用程序中。有不同的方法可以完成这个操作,具体取决于您使用的平台和编译器。在Linux上,您需要将-lsoil添加到链接器标志中。


0

你必须链接SOIL库:

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

SOIL必须要大写


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接