2016-04-14 15 views
-1

Also, ich versuche, einen Wrapper für SDL_RenderCopy() und aus irgendeinem Grund, bekomme ich immer einen Fehler, der sagt "Verwendung von undefinierten Typ 'SDL_Texture'". Ich habe alle SDL2-Bibliotheken verknüpft und Header enthalten. Hier ist der Code:SDL_Texture nicht vom Compiler gefunden

void drawImage(Uint32 tex, float x, float y){ 
    SDL_Rect rec; 
    rec.x = x; 
    rec.y = y; 
    if(vcTextures.size() > tex){ //If the argument is in range 
     if(vcTextures[tex] != 0){ //If the index points to an image 
      rec.w = vcTextures[tex]->w; 
      rec.h = vcTextures[tex]->h; 
      SDL_RenderCopy(gvRender, vcTextures[tex], 0, &rec); 
     }; 
    }; 
}; 

vcTextures ist vom Typ vector<SDL_Texture*> die Adressen aller geladenen Texturen für einfache Reinigung am Ende der Ausführung zu speichern. Dies ist der einzige Ort, wo dies geschieht. Wenn ich auf die Nachricht klicke, die sagt "siehe Deklaration von 'SDL_Texture'", zeigt es mir die Deklaration an, also weiß ich, dass der Typ existiert, soweit es die Datei betrifft.

Hier ist die vollständige Fehlermeldung:

1>f:\c++\xyg\xyg_runtime\graphics.cpp(125) : error C2027: use of undefined type 'SDL_Texture' 
1>  d:\sdl2\vc\include\sdl_render.h(127) : see declaration of 'SDL_Texture' 
1>f:\c++\xyg\xyg_runtime\graphics.cpp(125) : error C2227: left of '->w' must point to class/struct/union/generic type 
+0

Und Sie haben den SDL-Header in * dieser * Quelldatei enthalten? Können Sie bitte Ihre Frage bearbeiten, um die * tatsächliche * Compiler-Ausgabe als Text einzufügen, sie einzufügen (und nicht umzuschreiben oder zu bearbeiten) und zu vervollständigen (einschließlich anderer Warnungen, Fehler oder Informationsnachrichten)? Und wenn möglich, versuche bitte ein [Minimal, Complete und Verifizierbares Beispiel] (http://stackoverflow.com/help/mcve) zu erstellen und zeig es uns auch. –

+0

Ja, ich habe es in diese Quelldatei aufgenommen und die vollständige Fehlermeldung hinzugefügt. Ich muss ein ganz neues Programm schreiben, um ein MCVE zu erstellen, also wird es etwas dauern. –

Antwort

2

Sie nicht Mitglieder SDL_Texture direkt zugreifen sollen. Es ist ein opaque type. Ich bin ziemlich sicher, dass die Dokumentation keine Mitglieder erwähnt w oder h, so weiß ich nicht, wo Sie die Idee, das zu tun. Wenn Sie Informationen über die Textur erhalten möchten, können Sie SDL_QueryTexture verwenden.

SDL_QueryTexture(vcTextures[tex], nullptr, nullptr, &rec.w, &rec.h); 
+0

Das wurde nicht in der Wiki-Seite für SDL_Texture erwähnt. Andererseits ist eine Menge von SDL2's Wiki sehr unvollständig. Ich werde sehen, ob das funktioniert. –

+0

Es hat funktioniert! Vielen Dank! –