2017-12-23 9 views
-1

Nun, ich versuche, mit GLFW zu beginnen, aber ich bekomme einige Probleme, wenn ich versuche, die Bibliotheken zu verknüpfen.Verknüpfung von GLFW-Bibliotheken Fehler

Ich versuche, das erste Beispiel der GLFW-Seite zu kompilieren.

#include <GLFW/glfw3.h> 

int main(void) 
{ 
    GLFWwindow* window; 

    /* Initialize the library */ 
    if (!glfwInit()) 
     return -1; 

    /* Create a windowed mode window and its OpenGL context */ 
    window = glfwCreateWindow(640, 480, "Hello World", NULL, NULL); 
    if (!window) 
    { 
     glfwTerminate(); 
     return -1; 
    } 

    /* Make the window's context current */ 
    glfwMakeContextCurrent(window); 

    /* Loop until the user closes the window */ 
    while (!glfwWindowShouldClose(window)) 
    { 
     /* Render here */ 
     glClear(GL_COLOR_BUFFER_BIT); 

     /* Swap front and back buffers */ 
     glfwSwapBuffers(window); 

     /* Poll for and process events */ 
     glfwPollEvents(); 
    } 

    glfwTerminate(); 
    return 0; 
} 

Compiler

g++ -L. libglfw3dll.a -lglfw3 -lopengl32 main.cpp 

In meinem Projektordner ich habe

glfw3.dll

libglfw3dll.a

Wenn ich versuche, es zu kompilieren, ich diese Linker erhalten Fehler

undefined Verweis auf `__imp_glClear '

Was mache ich falsch?

/---------------------- Bearbeiten --------------------- -------/

Sorry, ich vergaß, einige Dinge zu sagen, dass ein wenig meine Situation klären konnte ...

ich arbeite unter Windows 10, 64 Bits.

Compiler -> Mingw Binaries -> heruntergeladen von der offiziellen Seite

Ich habe versucht, den Code mit den statischen Bibliotheken zu kompilieren, und ich habe viele undefinierte Referenzen.

g++ -L. -lopengl32 -lglu32 -lgdi32 -lglfw3 main.cpp 

Dann habe ich versucht, die dynamische Bibliothek glfw.dll zu verwenden. Ich habe auch die Bibliothek glfwdll.a verbunden und das Makro GLFW_DLL vor dem Einfügen der Header definiert.

g++ -L. libglfw3dll.a -lglfw3 -lopengl32 main.cpp 

mit der letzten Option, ich habe nur 1 undefined reference

undefined reference to `__imp_glClear' 

Ich verstehe, dass dies von der opengl32 Bibliothek ist.

Ich verstehe auch, dass ich etwas vermisse, das ich nicht finden kann.

Hier komme ich wieder, können Sie mir eine Hand geben, und mir sagen, was ich vermisse?

Danke!

+0

Gehen Sie zum Abschnitt _GLAD_ auf [leadopengl] (https://learnopengl.com/#!Getting-started/Creating-a-window). Das könnte hier das Problem sein. –

Antwort

0

Bitte lesen Sie das Handbuch GLFW: Building applications

Bellow ist das Teil für GNU-Umgebung zitiert. Wenn Sie Ihre Anwendung für Windows entwickeln, finden Sie dort auch entsprechende Anleitungen.

GLFW unterstützt pkg-config, und die Datei glfw3.pc pkg-config wird generiert, wenn die GLFW-Bibliothek erstellt und mit installiert wird. Eine pkg-config Datei beschreibt alle notwendigen Kompilierungszeit- und Verbindungszeit-Flags und Abhängigkeiten, die benötigt werden, um eine Bibliothek zu verwenden. Wenn sie aktualisiert werden oder sich zwischen den Systemen unterscheiden, erhalten Sie automatisch die richtigen.

Eine typische Kompilierung und Link-Befehlszeile, wenn die statische Version der Bibliothek GLFW verwenden kann wie folgt aussehen:

cc `pkg-config --cflags glfw3` -o myprog myprog.c `pkg-config --static --libs glfw3` 

Wenn Sie die freigegebene Version der GLFW Bibliothek verwenden, lassen Sie einfach die --static Flagge .

cc `pkg-config --cflags glfw3` -o myprog myprog.c `pkg-config --libs glfw3` 

Sie können auch die glfw3.pc Datei verwenden, ohne sie zuerst zu installieren, mithilfe der PKG_CONFIG_PATH Umgebungsvariable.

env PKG_CONFIG_PATH=path/to/glfw/src cc `pkg-config --cflags glfw3` -o myprog myprog.c `pkg-config --libs glfw3` 

Die Abhängigkeiten enthalten keine OpenGL oder GLU, wie GLFW lädt jede OpenGL, OpenGL ES oder Vulkan-Bibliotheken zur Laufzeit benötigt und GLU nicht verwendet. Unter OS X ist GLU in das OpenGL-Framework integriert. Wenn Sie also GLU benötigen, müssen Sie nichts extra tun. Wenn Sie GLU benötigen und Linux oder BSD verwenden, sollten Sie das Paket glu pkg-config hinzufügen.

cc `pkg-config --cflags glfw3 glu` -o myprog myprog.c `pkg-config --libs glfw3 glu` 

Hinweis

GLU ist veraltet und nicht in neuen Code verwendet werden sollte, aber einige Code Erbe erfordert.

Wenn Sie die statische Version der GLFW-Bibliothek verwenden, stellen Sie sicher, dass Sie nicht statisch mit der GLU verknüpfen.

cc `pkg-config --cflags glfw3 glu` -o myprog myprog.c `pkg-config --static --libs glfw3` `pkg-config --libs glu`