当前位置:  开发笔记 > 编程语言 > 正文

简单的openGL程序不会通过编译

如何解决《简单的openGL程序不会通过编译》经验,为你挑选了1个好方法。

我正在尝试在openGL中编译一个非常简单的程序:

#include 
#include 
#include 
#include 
#include 

using namespace glm;

int main()
{
    if( !glfwInit() )
    {
            fprintf( stderr, "Failed to initialize GLFW\n");
            return -1;
    }

    glfwWindowHint(GLFW_SAMPLES, 4); // 4x antialiasing
    glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3); // Use OpenGL 3.X
    glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3); // Use openGL X.3
    glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE);  
    glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE); 

    // Open a window and create OpenGL context
    GLFWwindow* window; // May be needed to make it global
    window = glfwCreateWindow(1024, 768, "Tutorial 01", NULL, NULL);
    if(window == NULL)
    {
            fprintf(stderr, "Failed to pen GLFW window. If you have Intel GPU they are not 3.3 compatible. Try the 2.1 version of the tutorial.\n");
            glfwTerminate();
            return -1;
    }
    glfwMakeContextCurrent(window); // Initialize GLEW
    glewExperimental=true; // Needed in core profile
    if(glewInit() != GLEW_OK)
    {
            fprintf(stderr, "Failed to initialize GLEW.\n");
            return -1;
    }
}

但是,当我尝试使用g ++编译它时,我遇到以下错误:

In function `main':
playground.cpp:(.text+0x9): undefined reference to `glfwInit'
playground.cpp:(.text+0x49): undefined reference to `glfwWindowHint'
playground.cpp:(.text+0x58): undefined reference to `glfwWindowHint'
playground.cpp:(.text+0x67): undefined reference to `glfwWindowHint'
playground.cpp:(.text+0x76): undefined reference to `glfwWindowHint'
playground.cpp:(.text+0x85): undefined reference to `glfwWindowHint'
playground.cpp:(.text+0xa4): undefined reference to `glfwCreateWindow'
playground.cpp:(.text+0xd2): undefined reference to `glfwTerminate'
playground.cpp:(.text+0xe5): undefined reference to `glfwMakeContextCurrent'
playground.cpp:(.text+0xeb): undefined reference to `glewExperimental'
playground.cpp:(.text+0xf1): undefined reference to `glewInit'
collect2: error: ld returned 1 exit status

我已经找到了一些针对这个特定问题的帖子,解决方案似乎是将所需的库作为参数传递给g ++.但是,当我这样做时,问题仍然存在.

这是我编译代码的方式:

g++ -lglfw3 -pthread -lGLEW -lGLU -lGL -lrt -lXrandr -lXxf86vm -lXi -lXinerama -lX11 -o openGLWindow openGLWindow.cpp

任何帮助,将不胜感激...



1> Employed Rus..:

当我尝试使用g ++编译它时,我收到以下错误:

不,你的汇编很好.您收到链接错误,而不是编译错误.

链接错误的原因是您的链接命令行完全向后.试试这个:

g++ -pthread -o openGLWindow openGLWindow.cpp -lglfw3 -lGLEW -lGLU -lGL -lXrandr -lXxf86vm -lXi -lXinerama -lX11 -lrt -ldl

我不确定上面的库的顺序是否正确,但它肯定比你拥有的更好.命令行上的源,目标文件和库的顺序很重要.

推荐阅读
谢谢巷议
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有