在NetBeans的Linux中,无法在C ++和OpenGL(GLFW)中编译简单的源代码

我开始学习OpenGL(glfw),并从教程中复制源代码,并尝试编译它,但出现错误。 我想我已经正确安装了所有的头文件(glm,glfw等)

这是我的源代码(我没有在头文件中使用这些字符:<,>):

#include iostream #include stdio.h #include stdlib.h #include GL/glew.h #include GLFW/glfw3.h #include glm/glm.hpp #define GLFW_INCLUDE_GL_3 using namespace glm; using namespace std; int main(){ if(!glfwInit()){ return -1; } GLFWwindow* window; // (In the accompanying source code, this variable is global) window = glfwCreateWindow( 1024, 768, "Tutorial 01", NULL, NULL); if( window == NULL ) { fprintf( stderr, "Failed to open GLFW window. If you have an Intel GPU, they are not 3.3 compatible. Try the 2.1 version of the tutorials.\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; } return 0; } 

这是NetBeans中的输出:

 "/usr/bin/make" -f nbproject/Makefile-Debug.mk QMAKE= SUBPROJECTS= .build-conf make[1]: Entering directory `/home/jan/NetBeansProjects/a' "/usr/bin/make" -f nbproject/Makefile-Debug.mk dist/Debug/GNU-Linux-x86/a make[2]: Entering directory `/home/jan/NetBeansProjects/a' mkdir -p dist/Debug/GNU-Linux-x86 g++ -o dist/Debug/GNU-Linux-x86/a build/Debug/GNU-Linux-x86/main.o build/Debug/GNU-Linux-x86/main.o: In function `main': /home/jan/NetBeansProjects/a/main.cpp:12: undefined reference to `glfwInit' /home/jan/NetBeansProjects/a/main.cpp:16: undefined reference to `glfwCreateWindow' /home/jan/NetBeansProjects/a/main.cpp:19: undefined reference to `glfwTerminate' /home/jan/NetBeansProjects/a/main.cpp:22: undefined reference to `glfwMakeContextCurrent' /home/jan/NetBeansProjects/a/main.cpp:25: undefined reference to `glewExperimental' /home/jan/NetBeansProjects/a/main.cpp:26: undefined reference to `glewInit' collect2: error: ld returned 1 exit status make[2]: *** [dist/Debug/GNU-Linux-x86/a] Error 1 make[2]: Leaving directory `/home/jan/NetBeansProjects/a' make[1]: *** [.build-conf] Error 2 make[1]: Leaving directory `/home/jan/NetBeansProjects/a' make: *** [.build-impl] Error 2 BUILD FAILED (exit value 2, total time: 462ms) 

请帮帮我。 感谢您的时间。

Solutions Collecting From Web of "在NetBeans的Linux中,无法在C ++和OpenGL(GLFW)中编译简单的源代码"

首先要做的事情

这是我的源代码(我没有在头文件中使用这个字符:<,>):

这是错误的,你应该。 你目前的include语句是错误的,我真的很惊讶它是如何通过编译过程的。

你在这里看到链接错误:

 /home/jan/NetBeansProjects/a/main.cpp:12: undefined reference to `glfwInit' /home/jan/NetBeansProjects/a/main.cpp:16: undefined reference to `glfwCreateWindow' /home/jan/NetBeansProjects/a/main.cpp:19: undefined reference to `glfwTerminate' /home/jan/NetBeansProjects/a/main.cpp:22: undefined reference to `glfwMakeContextCurrent' /home/jan/NetBeansProjects/a/main.cpp:25: undefined reference to `glewExperimental' /home/jan/NetBeansProjects/a/main.cpp:26: undefined reference to `glewInit' 

可能有以下失败的选项:

  • 你不链接反对图书馆(最有可能)

  • 你没有安装图书馆(不太可能,根据你的描述)

  • 您正在使用图书馆中不存在的符号(再次,不太可能)

最可能的原因是,最终你并没有和图书馆联系在一起。 你应该为链接器设置这个设置:

 -lglfw3 

请注意,当您开始添加这些链接时,您还需要在链中添加所有依赖项,所以根据您的评论,这是要添加的整个链:

 -L/usr/local/lib -lglfw3 -pthread -lGLEW -lGLU -lGL -lrt -lXrandr -lXxf86vm -lXi -lXinerama -lX11 

由于您使用的是Netbeans IDE,因此除非您手动在后台编辑文件,否则需要转到项目设置进行设置。 在这里,你可以看到一个屏幕截图,显示你有一个链接器选项卡,你可以正确设置所有这些。

在这里输入图像说明

我解决它:

我将这些参数添加到链接器:

 -L/usr/local/lib -lglfw3 -pthread -lGLEW -lGLU -lGL -lrt -lXrandr -lXxf86vm -lXi -lXinerama -lX11