我无法让GLEW在ubuntu 20.04C ++中的netbeans上工作

问题描述

我设法使GLFW3正常工作并正确显示一个窗口,但是当我向项目中添加glewInit()时,它会告诉我undefined reference to glewInit'。我正在使用g ++作为编译器,并以-lglfw3lGl作为标志。以下是一个简单的项目来演示我的问题。我在linux上。非常感谢任何帮助。

#include <GL/glew.h>
#include <GL/gl.h>
#include <GLFW/glfw3.h>

#include <iostream>

// settings
const unsigned int SCR_WIDTH = 800;
const unsigned int SCR_HEIGHT = 600;

int main()
{
    // glfw: initialize and configure
    // ------------------------------
    glfwInit();
    glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR,3);
    glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR,3);
    glfwWindowHint(GLFW_OPENGL_PROFILE,GLFW_OPENGL_CORE_PROFILE);

    // glfw window creation
  
    GLFWwindow* window = glfwCreateWindow(SCR_WIDTH,SCR_HEIGHT,"LearnOpenGL",NULL,NULL);
    if (window == NULL)
    {
        std::cout << "Failed to create GLFW window" << std::endl;
        glfwTerminate();
        return -1;
    }
    glfwMakeContextCurrent(window);
    
    // here is the error,my glew is not intializing :(
    if(glewInit() != GLEW_OK) {
        return 0;
    }
    
    // render loop
   
    while (!glfwWindowShouldClose(window))
    {

        // render

        glClearColor(0.2f,0.3f,1.0f);
        glClear(GL_COLOR_BUFFER_BIT);

        // glfw: swap buffers and poll IO events (keys pressed/released,mouse moved etc.)
 
        glfwSwapBuffers(window);
        glfwPollEvents();
    }

    // glfw: terminate,clearing all previously allocated GLFW resources.
   
    glfwTerminate();
    return 0;
}

解决方法

Linux上有一种标准方法来获取一组正确的库来与您的程序链接-请查看man pkg-config。在您的情况下,您需要链接GLFW3和GLEW都需要的所有内容-因此您应该两次调用pkg-config

hekto@ubuntu:~$ pkg-config --libs glfw3
-lglfw
hekto@ubuntu:~$ pkg-config --libs glew
-lGLEW -lGLU -lGL

因此,您需要使用-lglfw而不是-lglfw3并添加另外两个库--lGLEW-lGLU。这些对pkg-config工具的调用也可以直接添加到您的Makefile中。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...