2016-06-11 8 views
1

Ich versuche, ein glew_mx-Projekt von Windows zu Ubuntu zu portieren, aber ich bekomme immer Fehler wegen GLEWContext undefined.'GLEWContext nennt keinen Typ' Fehler auf Ubuntu

error: ‘GLEWContext’ does not name a type 

Ich weiß, dass ich wirklich brauche GLEWContext auf Linux nicht, aber trotzdem habe ich

GLEWContext* glewGetContext(); 

zu definieren, um mein Projekt zu kompilieren. Also habe ich einen globalen GLEWContext erstellt und ihn einfach in glewGetContext zurückgegeben.
Mein window.h Code sieht wie folgt aus:

#pragma once 
#define GLEW_MX 
#define GLEW_STATIC 
#include "GL/glew.h" 
#include "GLFW/glfw3.h" 
#define GLM_SWIZZLE 
#include "glm/glm.hpp" 
#include "glm/ext.hpp" 

#ifdef _WIN32 
#define CONTEXT_PREFIX window 
#else 
#define CONTEXT_PREFIX 
#endif 

namespace window 
{ 
    class Window 
    { 
    public: 
     Window() {} 
     ~Window() {} 

     //... 

#ifdef _WIN32 
     static void makeContextCurrent(Window* window_handle); 
#endif 
     static Window* createWindow(int win_width, int win_height, const std::string& title, GLFWmonitor* monitor, Window* share); 

     GLFWwindow* window; 
#ifdef _WIN32 
     GLEWContext* glew_context; 
#endif 
     //... 

    private: 
     //... 
    }; 

    GLEWContext* glewGetContext(); 
#ifdef _WIN32 
    //... 
#else 
    GLEWContext* glew_context; 
#endif 
} 

Und der Code in window.cpp sieht wie folgt aus:

#ifdef _WIN32 
GLEWContext* window::glewGetContext() 
{ 
    //... 
} 
#else 
GLEWContext* window::glewGetContext() 
{ 
    return glew_context; 
} 
#endif 

Der Fehler tritt auf, während die letzten beiden Zeilen in window.h Kompilieren Vielen Dank für Ihre Hilfe

Antwort

1

Es scheint, der Compiler kompiliert Ihre Window Klasse und ruft die GLEWContext* glew_context Zeile. Aber GLEWContext möglicherweise nicht definiert, so forward declaration könnte hilfreich sein.

Da Sie von Windows zu Ubuntu portieren, müssen Sie sicher sein, dass der #pragma von Ihrem Compiler unterstützt wird. Sie können Ihren Einschlussschutz auf

#ifndef WINDOW_H 
#define WINDOW_H 
// Your code here 
#endif 
ändern