OpenGL: Frage zum Error LNK2001 glewExperimental



  • Guten Tag, Alle

    Ich bin Anfänger von OpenGL und möchte zu Lernen die Funktionen von Glew testen.
    Entwicklungsumgebung: Windows 8.1 (x64) und Visual Studio 2013.
    Die Libs, Dlls und includes-headers sind schon vorhanden und in VS konfiguriet worden.
    Eingebundene Bibliotheken in VS sind freeglut, glew und glfw.

    Nachdem ich mit Hilfe von GLFW die Eigenschaften vom Fenster festgelegt habe, möchte ich mich mit den Inhalten anfangen. Dennoch habe ich gerade ein Problem dass mir eine Fehlermeldung

    Error LNK2001: unresolved external symbol glewExperimental F:\Install\Lernen\OpenGLDev\Projects\MyOpenGLTestA\MyOpenGLTestA\main.obj	MyOpenGLTestA
    

    ausgegeben hat, wenn ich folgenden Code kompiliere.

    Code:

    #include <iostream>
    #include <stdio.h>
    // GLEW
    #define GLEW_STATIC
    #include <GL/glew.h>
    #include <GL/glut.h> // einbinden von GLUT
    
    // GLFW
    #include <GLFW/glfw3.h>
    using namespace std;
    
    // Function prototypes
    //void key_callback(GLFWwindow* window, int key, int scancode, int action, int mode);
    
    // Window dimensions
    const GLuint WIDTH = 800, HEIGHT = 600;
    
    // Shaders
    const GLchar* vertexShaderSource = "#version 330 core\n"
    "layout (location = 0) in vec3 position;\n"
    "void main()\n"
    "{\n"
    "gl_Position = vec4(position.x, position.y, position.z, 1.0);\n"
    "}\0";
    const GLchar* fragmentShaderSource = "#version 330 core\n"
    "out vec4 color;\n"
    "void main()\n"
    "{\n"
    "color = vec4(1.0f, 0.5f, 0.2f, 1.0f);\n"
    "}\n\0";
    
    void display(void) { // ¨ahnlich repaint in Java
    	glClearColor(1.0, 1.0, 1.0, 0.0); //Loeschfarbe setzen
    	glClear(GL_COLOR_BUFFER_BIT); // Fenster löschen
    	glFlush(); // erzwinge Neuanzeige
    }
    
    void keyboard(unsigned char key, int x, int y)
    {
    	if (key == 27) // ESC
    		exit(0);
    	else printf("Sie haben %c gedr¨uckt.\n", key);
    	// braucht <stdio.h>
    }
    
    // Is called whenever a key is pressed/released via GLFW
    void key_callback(GLFWwindow* window, int key, int scancode, int action, int mode)
    {
    	if (key == GLFW_KEY_ESCAPE && action == GLFW_PRESS){
    		std::cout << "KEY" << std::endl;
    		glfwSetWindowShouldClose(window, GL_TRUE);
    	}	
    }
    
    int main(int argc, char **argv) { // Kommandozeilenparameter
    
    	// Init GLFW
    	glfwInit();
    
    	if (!glfwInit())
    	{
    		fprintf(stderr, "Failed to initialize GLFW\n");
    		getchar();
    		return NULL;
    	}
    
    	// Set all the required options for GLFW
    	glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
    	glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);
    	//GLFW_OPENGL_CORE_PROFILE meants that the older version of less than 3.3 may give a error. 
    	glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
    	//It is not allowed to resize the window
    	glfwWindowHint(GLFW_RESIZABLE, GL_FALSE);
    
    	// Create a GLFWwindow object that we can use for GLFW's functions
    	GLFWwindow* window = glfwCreateWindow(WIDTH, HEIGHT, "LearnOpenGL", nullptr, nullptr);
    	if (window == nullptr)
    	{
    		std::cout << "Failed to create GLFW window" << std::endl;
    		glfwTerminate();
    		//getchar();
    		return NULL;
    		return -1;
    	}
    	glfwMakeContextCurrent(window);
    
    	// Set the required callback functions
    	glfwSetKeyCallback(window, key_callback);
    
    	// Set this to true so GLEW knows to use a modern approach to retrieving function pointers and extensions
    	glewExperimental = GL_TRUE;
    	// Initialize GLEW to setup the OpenGL Function pointers
    	glewInit();
    
    	// Define the viewport dimensions
    	int width, height;
    	glfwGetFramebufferSize(window, &width, &height);
    	glViewport(0, 0, width, height);
    
    	/* Glut Functions
    	glutInit(&argc, argv); // initialisiere OpenGL
    	glutInitWindowSize(500, 500);
    	glutInitWindowPosition(100, 100);
    	glutCreateWindow("Fensterln"); // Fenster erzeugen
    	glutDisplayFunc(display); // registiere obige Fkt. als
    	// Behandler fuer Auffrischen
    	glutMainLoop(); // Hauptereignisschleife starten
    	*/
    	return 0;
    	//glutKeyboardFunc(keyboard);
    
    }
    

    Hat jemand da eine Idee, wie ich es beheben könnte?

    Vielean Dank! LG, David :p



  • Du hast den prototyp key_callback auskommentiert



  • Die Funktion key_callback habe ich unten definiert.


  • Mod

    welche version von glew benutzt du?



  • Glew 2.0.0

    Das Problem ist inzwischen schon erhoben worden, trotzdem danke! LG


  • Mod

    hah, ja 🙂
    glewexperimental gab es ab 2.0 nicht (soweit ich weiss)


Anmelden zum Antworten