gpt4 book ai didi

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

转载 作者:IT王子 更新时间:2023-10-29 00:18:45 26 4
gpt4 key购买 nike

我开始学习 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)

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

最佳答案

要事第一:

this is my source (I didn't use this characters: <, > in header files.):

这是错误的,你应该这样做。您当前的 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,除非您在后台手动编辑文件,否则您需要转到项目设置进行设置。在这里,您可以看到一个屏幕截图,它表明您有一个链接器选项卡,您可以在其中正确设置所有这些。

enter image description here

关于c++ - 无法在 NetBeans 的 Linux 中用 C++ 和 OpenGL (GLFW) 编译简单的源代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23171894/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com