3

我不知道为什么这一直在说:

未定义对“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

4 回答 4

8

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

于 2013-12-29T09:58:15.700 回答
5

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

于 2014-02-06T23:17:20.073 回答
1

未定义的参考意味着您需要将土壤库链接到您的应用程序。有不同的方法可以做到这一点,这取决于您使用的平台和编译器。在 Linux 上,您需要将 -lsoil 之类的内容添加到链接器标志中。

于 2013-07-05T22:22:00.173 回答
0

您必须链接到 SOIL 库:

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

SOIL 必须有上限

于 2013-07-05T23:11:01.693 回答