C++ 为什么不是';t SDL_QueryTexture是否为其int*参数赋值?

C++ 为什么不是';t SDL_QueryTexture是否为其int*参数赋值?,c++,sdl-2,C++,Sdl 2,我的代码中的一个调整导致了一个奇怪的事件,这导致了SEGFULTS。在通过gdb运行它之后,我发现对SDL_QueryTexture的调用没有将SDL_纹理的宽度和高度值分配给传递给该方法的int指针。我调用了SDL_GetError()并打印了它,它说:“加载SHCORE.DLL失败:找不到指定的模块。”在搜索时,我听说这可能与旧版本的Windows有关。我有Windows7,但是代码是从以前开始工作的,所以我怀疑Windows是这里的问题,但是代码。我认为导致问题的代码(包括SDL_Quer

我的代码中的一个调整导致了一个奇怪的事件,这导致了SEGFULTS。在通过gdb运行它之后,我发现对SDL_QueryTexture的调用没有将SDL_纹理的宽度和高度值分配给传递给该方法的int指针。我调用了SDL_GetError()并打印了它,它说:“加载SHCORE.DLL失败:找不到指定的模块。”在搜索时,我听说这可能与旧版本的Windows有关。我有Windows7,但是代码是从以前开始工作的,所以我怀疑Windows是这里的问题,但是代码。我认为导致问题的代码(包括SDL_QueryTexture调用)如下所示:

struct TextTexture {

private:
    SDL_Texture* texture;
    SDL_Rect destinationrect;
    int* w;
    int* h;

void loadText(string s) {
        SDL_Color color = {255,255,255};
        SDL_Surface* textsurface = TTF_RenderText_Solid(font, s.c_str(), color);
        if(textsurface == NULL) {
            cout << "Could not rendertext onto surface" << endl;
        }
        texture = SDL_CreateTextureFromSurface(r,textsurface);
        if(texture == NULL) {
            cout << "Could not make texture" << SDL_GetError() << endl;
        }
        SDL_QueryTexture(texture, NULL, NULL, w, h);
        cout << SDL_GetError() << endl;
        SDL_FreeSurface(textsurface);
        textsurface = NULL;



    }

    void textRender(int x, int y) {

        destinationrect = {x,y,*w,*h};
        if (SDL_RenderCopy(r,texture,NULL,&destinationrect) < 0) {
            cout << "Rendercopy error" << SDL_GetError() << endl;
        }


    }
};
struct textTextTexture{
私人:
SDL_纹理*纹理;
SDL__Rect destinationrect;
int*w;
int*h;
无效加载文本(字符串s){
SDL_颜色={255255};
SDL_Surface*textsurface=TTF_RenderText_Solid(字体,s.c_str(),颜色);
if(textsurface==NULL){

cout代码的问题在于,您只是通过值而不是指针传递
int
变量。 SDL是用C编写的,因此它不像C++那样没有传递引用。因此,为了允许SDL将变量输入到变量中,需要传递指向这些变量

的指针。 您将更改这行代码:

SDL\u QueryTexture(纹理,NULL,NULL,w,h);

为此:

SDL_QueryTexture(纹理、空、空、w和h);


符号返回变量
w
h
的地址

如果您想了解C++中的指针,这里有一个链接:


w
h
int*
,而不是
int
,OP需要更改。将
w
h
更改为普通
int
s,并执行
SDL\u查询结构(…,&w,&h)
。s
r
来自何处?在a中编辑。