【问题标题】:C++ SFML 2.1 undefined reference to GLEWC++ SFML 2.1 未定义对 GLEW 的引用
【发布时间】:2015-02-14 19:38:28
【问题描述】:

我正在尝试编译这个:

#include < SFML/Graphics.hpp>

int main()
{

    sf::RenderWindow window(sf::VideoMode(200, 200), "SFML works!");
    sf::CircleShape shape(100.f);
    shape.setFillColor(sf::Color::Green);

    while (window.isOpen())
    {
        sf::Event event;
        while (window.pollEvent(event))
        {
            if (event.type == sf::Event::Closed)
                window.close();
        }

        window.clear();
        window.draw(shape);
        window.display();
    }

    return 0;
}

clang ++ -c main.cpp 有效!!

clang++ main.o -o sfml-app -lsfml-graphics -lsfml-window -lsfml-system

给我休闲错误:

/usr/bin/ld: warning: libGLEW.so.1.5, needed by /usr/bin/../lib/gcc/x86_64-linux-gnu/4.8/../../../libsfml-graphics.so, not found (try using -rpath or -rpath-link)
/usr/bin/ld: warning: libjpeg.so.62, needed by /usr/bin/../lib/gcc/x86_64-linux-gnu/4.8/../../../libsfml-graphics.so, not found (try using -rpath or -rpath-link)
/usr/bin/../lib/gcc/x86_64-linux-gnu/4.8/../../../libsfml-graphics.so: undefined reference to `jpeg_finish_compress@LIBJPEG_6.2'
/usr/bin/../lib/gcc/x86_64-linux-gnu/4.8/../../../libsfml-graphics.so: undefined reference to `jpeg_write_scanlines@LIBJPEG_6.2'
/usr/bin/../lib/gcc/x86_64-linux-gnu/4.8/../../../libsfml-graphics.so: undefined reference to `__glewUniform1fARB'
/usr/bin/../lib/gcc/x86_64-linux-gnu/4.8/../../../libsfml-graphics.so: undefined reference to `jpeg_std_error@LIBJPEG_6.2'
/usr/bin/../lib/gcc/x86_64-linux-gnu/4.8/../../../libsfml-graphics.so: undefined reference to `__GLEW_ARB_shader_objects'
/usr/bin/../lib/gcc/x86_64-linux-gnu/4.8/../../../libsfml-graphics.so: undefined reference to `__glewGetObjectParameterivARB'
/usr/bin/../lib/gcc/x86_64-linux-gnu/4.8/../../../libsfml-graphics.so: undefined reference to `__GLEW_ARB_vertex_shader'
/usr/bin/../lib/gcc/x86_64-linux-gnu/4.8/../../../libsfml-graphics.so: undefined reference to `__glewFramebufferTexture2DEXT'
/usr/bin/../lib/gcc/x86_64-linux-gnu/4.8/../../../libsfml-graphics.so: undefined reference to `__glewUniformMatrix4fvARB'
/usr/bin/../lib/gcc/x86_64-linux-gnu/4.8/../../../libsfml-graphics.so: undefined reference to `jpeg_set_quality@LIBJPEG_6.2'
/usr/bin/../lib/gcc/x86_64-linux-gnu/4.8/../../../libsfml-graphics.so: undefined reference to `__glewGenFramebuffersEXT'
/usr/bin/../lib/gcc/x86_64-linux-gnu/4.8/../../../libsfml-graphics.so: undefined reference to `__glewUniform3fARB'
/usr/bin/../lib/gcc/x86_64-linux-gnu/4.8/../../../libsfml-graphics.so: undefined reference to `jpeg_set_defaults@LIBJPEG_6.2'
/usr/bin/../lib/gcc/x86_64-linux-gnu/4.8/../../../libsfml-graphics.so: undefined reference to `__glewRenderbufferStorageEXT'
/usr/bin/../lib/gcc/x86_64-linux-gnu/4.8/../../../libsfml-graphics.so: undefined reference to `jpeg_CreateCompress@LIBJPEG_6.2'
/usr/bin/../lib/gcc/x86_64-linux-gnu/4.8/../../../libsfml-graphics.so: undefined reference to `__GLEW_ARB_fragment_shader'
/usr/bin/../lib/gcc/x86_64-linux-gnu/4.8/../../../libsfml-graphics.so: undefined reference to `__glewActiveTextureARB'
/usr/bin/../lib/gcc/x86_64-linux-gnu/4.8/../../../libsfml-graphics.so: undefined reference to `jpeg_start_compress@LIBJPEG_6.2'
/usr/bin/../lib/gcc/x86_64-linux-gnu/4.8/../../../libsfml-graphics.so: undefined reference to `__glewShaderSourceARB'
/usr/bin/../lib/gcc/x86_64-linux-gnu/4.8/../../../libsfml-graphics.so: undefined reference to `glewInit'
/usr/bin/../lib/gcc/x86_64-linux-gnu/4.8/../../../libsfml-graphics.so: undefined reference to `__glewBindFramebufferEXT'
/usr/bin/../lib/gcc/x86_64-linux-gnu/4.8/../../../libsfml-graphics.so: undefined reference to `__glewFramebufferRenderbufferEXT'
/usr/bin/../lib/gcc/x86_64-linux-gnu/4.8/../../../libsfml-graphics.so: undefined reference to `__glewLinkProgramARB'
/usr/bin/../lib/gcc/x86_64-linux-gnu/4.8/../../../libsfml-graphics.so: undefined reference to `__glewUseProgramObjectARB'
/usr/bin/../lib/gcc/x86_64-linux-gnu/4.8/../../../libsfml-graphics.so: undefined reference to `__glewBlendFuncSeparateEXT'
/usr/bin/../lib/gcc/x86_64-linux-gnu/4.8/../../../libsfml-graphics.so: undefined reference to `__glewGenRenderbuffersEXT'
/usr/bin/../lib/gcc/x86_64-linux-gnu/4.8/../../../libsfml-graphics.so: undefined reference to `__glewUniform2fARB'
/usr/bin/../lib/gcc/x86_64-linux-gnu/4.8/../../../libsfml-graphics.so: undefined reference to `jpeg_destroy_compress@LIBJPEG_6.2'
/usr/bin/../lib/gcc/x86_64-linux-gnu/4.8/../../../libsfml-graphics.so: undefined reference to `__glewUniform4fARB'
/usr/bin/../lib/gcc/x86_64-linux-gnu/4.8/../../../libsfml-graphics.so: undefined reference to `__glewCreateProgramObjectARB'
/usr/bin/../lib/gcc/x86_64-linux-gnu/4.8/../../../libsfml-graphics.so: undefined reference to `glewGetErrorString'
/usr/bin/../lib/gcc/x86_64-linux-gnu/4.8/../../../libsfml-graphics.so: undefined reference to `__glewCompileShaderARB'
/usr/bin/../lib/gcc/x86_64-linux-gnu/4.8/../../../libsfml-graphics.so: undefined reference to `__glewDeleteRenderbuffersEXT'
/usr/bin/../lib/gcc/x86_64-linux-gnu/4.8/../../../libsfml-graphics.so: undefined reference to `__glewDeleteObjectARB'
/usr/bin/../lib/gcc/x86_64-linux-gnu/4.8/../../../libsfml-graphics.so: undefined reference to `__glewGetUniformLocationARB'
/usr/bin/../lib/gcc/x86_64-linux-gnu/4.8/../../../libsfml-graphics.so: undefined reference to `__glewGetInfoLogARB'
/usr/bin/../lib/gcc/x86_64-linux-gnu/4.8/../../../libsfml-graphics.so: undefined reference to `__GLEW_EXT_blend_func_separate'
/usr/bin/../lib/gcc/x86_64-linux-gnu/4.8/../../../libsfml-graphics.so: undefined reference to `__glewDeleteFramebuffersEXT'
/usr/bin/../lib/gcc/x86_64-linux-gnu/4.8/../../../libsfml-graphics.so: undefined reference to `__glewCheckFramebufferStatusEXT'
/usr/bin/../lib/gcc/x86_64-linux-gnu/4.8/../../../libsfml-graphics.so: undefined reference to `__glewUniform1iARB'
/usr/bin/../lib/gcc/x86_64-linux-gnu/4.8/../../../libsfml-graphics.so: undefined reference to `__GLEW_ARB_texture_non_power_of_two'
/usr/bin/../lib/gcc/x86_64-linux-gnu/4.8/../../../libsfml-graphics.so: undefined reference to `jpeg_stdio_dest@LIBJPEG_6.2'
/usr/bin/../lib/gcc/x86_64-linux-gnu/4.8/../../../libsfml-graphics.so: undefined reference to `__GLEW_ARB_shading_language_100'
/usr/bin/../lib/gcc/x86_64-linux-gnu/4.8/../../../libsfml-graphics.so: undefined reference to `__glewCreateShaderObjectARB'
/usr/bin/../lib/gcc/x86_64-linux-gnu/4.8/../../../libsfml-graphics.so: undefined reference to `__glewBindRenderbufferEXT'
/usr/bin/../lib/gcc/x86_64-linux-gnu/4.8/../../../libsfml-graphics.so: undefined reference to `__GLEW_EXT_framebuffer_object'
/usr/bin/../lib/gcc/x86_64-linux-gnu/4.8/../../../libsfml-graphics.so: undefined reference to `__glewAttachObjectARB'
/usr/bin/../lib/gcc/x86_64-linux-gnu/4.8/../../../libsfml-graphics.so: undefined reference to `__glewGetHandleARB'
clang: error: linker command failed with exit code 1 (use -v to see invocation)

【问题讨论】:

    标签: c++ linux sfml glew


    【解决方案1】:

    前两行中的错误消息告诉您显然缺少libGLEWlibjpeg。需要自己安装各自的开发包(或者自己下载、编译、安装)。

    其他错误只是在任何一个依赖库中缺少的函数。

    【讨论】:

    • 感谢您的回复,我从这里下载了它sourceforge.net/projects/glew/files/glew/1.11.0 我已经阅读了有关如何安装的自述文件,但我一无所获。我知道这可能是愚蠢的问题,但我对此很陌生,抱歉
    • @Edin:从错误消息中,我会说您需要 1.5 版的 GLEW 和 62 版的 libjpeg。否则找不到共享对象。 (不过,您可以修改符号链接)。但正如我所说,这些库通常由 OS 打包系统打包,这是首选方式。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-10-25
    • 1970-01-01
    • 2021-12-23
    • 2017-03-11
    • 2018-07-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多