Kann nicht kompilieren einfach Quellcode in C++ und OpenGL (GLFW) in Linux in NetBeans
Begann ich zu lernen, OpenGL (glfw) und ich kopiere die Quelle aus einem tutorial und versucht zu kompilieren, aber Fehler sind aufgetreten. Ich glaube, ich habe richtig installiert alle header-Dateien (glm, glfw etc.)
Dies ist meine Quelle (ich habe nicht die folgenden Zeichen verwenden: <, > in header-Dateien):
#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;
}
- und das ist die Ausgabe von 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)
Bitte helfen Sie mir. Vielen Dank für Ihre Zeit.
- Sie sind nicht zu verknüpfen dagegen?
- Beachten Sie die "undefined reference" aufgeführten Punkte. Diese müssen gelöst werden.
- Wie kann ich die auflösen?
- Ich sehe keine netbeans Lösung in diesem post, aber...
- Ja, natürlich. Es werden Feste in den Projekteinstellungen von Netbeans, ideal.
Du musst angemeldet sein, um einen Kommentar abzugeben.
First things First:
Das ist falsch, und Sie sollten. Ihre aktuelle include-Anweisungen sind falsch, und ich bin tatsächlich überrascht, wie Sie an die Kompilierung auf diese Weise.
Sehen Sie linker Fehler hier:
Möglicherweise gibt es die folgenden Optionen für das scheitern:
Sind Sie nicht die Verknüpfung vor der Bibliothek (wahrscheinlich)
Sind Sie nicht die library installiert (unwahrscheinlich, auf der Grundlage Ihrer Beschreibung)
Sind Sie mit den Symbolen nicht in der Bibliothek vorhanden (auch unwahrscheinlich)
Der wahrscheinlich Grund dafür ist, dass Sie nicht die Verknüpfung, die gegen die Bibliothek schließlich. Sollten Sie dieses set-up für den linker:
Beachten Sie, dass Sie müssen auch hinzufügen, alles in die Kette kommt als Abhängigkeit, wenn Sie fügen Sie diese, so dass, basierend auf Ihren Kommentar dies ist die ganze Kette hinzufügen:
Da Sie über die Netbeans-IDE, müssen Sie gehen, um die Projekt-Einstellungen, um es einzurichten, es sei denn, Sie Bearbeiten die Dateien in den hintergrund manuell. Hier sehen Sie einen screenshot, die zeigt, dass Sie ein linker-Registerkarte hier können Sie all das richtig.
pthread
: stackoverflow.com/a/41709490/893511Ich es lösen:
Ich fügte hinzu, diese Parameter zu linker: