我无法让 GLEW 在 ubuntu 20.04 (C++) 中的 netbeans 上工作
I cant get GLEW to work on netbeans in ubuntu 20.04 (C++)
我设法让 GLFW3 工作并正确显示 window,但是当我将 glewInit()
添加到我的项目时它告诉我 undefined reference to glewInit'
。我使用 g++ 作为我的编译器,使用 -lglfw3
和 lGl
作为标志。下面是一个简单的项目来演示我的问题。我在 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, 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 上有一种标准方法可以通过您的程序将一组正确的库获取到 link - 请查看 man pkg-config
。在您的情况下,您需要 link 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
。
我设法让 GLFW3 工作并正确显示 window,但是当我将 glewInit()
添加到我的项目时它告诉我 undefined reference to glewInit'
。我使用 g++ 作为我的编译器,使用 -lglfw3
和 lGl
作为标志。下面是一个简单的项目来演示我的问题。我在 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, 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 上有一种标准方法可以通过您的程序将一组正确的库获取到 link - 请查看 man pkg-config
。在您的情况下,您需要 link 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
。