编译器找不到SDL_Texture

时间:2016-04-14 13:36:58

标签: c++ textures sdl

所以,我正在尝试为SDL_RenderCopy()创建一个包装器,出于某种原因,我不断收到一条错误,指出"使用未定义的类型' SDL_Texture'& #34 ;.我已将所有SDL2库链接在一起并包含标题。这是代码:

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的类型为vector<SDL_Texture*>,用于存储所有已加载纹理的地址,以便在执行结束时轻松清理。这是发生这种情况的唯一地方。当我点击显示&#34;&#34; SDL_Texture&#39;&#34;的声明时,它会向我显示声明,因此我知道该类型存在就文件而言。

这里是完整的错误消息:

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

1 个答案:

答案 0 :(得分:2)

您不应该直接访问SDL_Texture的成员。这是opaque type。我非常确定文档没有提及成员wh,所以我不知道你有什么想法这样做。如果要获取有关纹理的信息,可以使用SDL_QueryTexture

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