名称相关的程序行为

问题描述 投票:0回答:0

我最近尝试用 SDL2 为 Windows 10 编写一个 C 程序。我只使用一个源文件和 SDL2 dll。问题在于,如果我在编译前更改源文件的名称(或编译后的可执行文件的名称)而不是 2000*1400 像素的窗口,则会创建另一个巨大的窗口(见照片)。 with the original namewith a diffent name(每个像素都被拉伸,窗口进入全屏)

我使用 MinGW 作为编译器,语法如下:

gcc -B “包含路径” “sourceName.c” -o “sourceName.exe” -lmingw32 -lSDL2main -lSDL2

这是来源:

#include <SDL2\SDL.h>
#include <stdbool.h>
#include <stdio.h>

SDL_Renderer* rend;

int main(int argc, char *argv[])
{
    if (SDL_Init(SDL_INIT_EVERYTHING) != 0)
    {
        printf("Error initializing SDL: %s\n", SDL_GetError());
        return 0;
    }
    
    /* Create a window */
    SDL_Window* wind = SDL_CreateWindow("tst",
                                        SDL_WINDOWPOS_CENTERED,
                                        SDL_WINDOWPOS_CENTERED,
                                        2000, 1400, 0);

    if (!wind)
    {
        printf("Error creating window: %s\n", SDL_GetError());
        SDL_Quit();
        return 0;
    }

    /* Create a renderer */
    Uint32 render_flags = SDL_RENDERER_ACCELERATED | SDL_RENDERER_PRESENTVSYNC;
    rend = SDL_CreateRenderer(wind, -1, render_flags);
    if (!rend)
    {
        printf("Error creating renderer: %s\n", SDL_GetError());
        SDL_DestroyWindow(wind);
        SDL_Quit();
        return 0;
    }

    bool running = true;
    SDL_Event event;

    while (running)
    {
        while (SDL_PollEvent(&event))
        {
            switch (event.type)
            {
                case SDL_QUIT:
                    running = false;
            }
        }

        SDL_RenderPresent(rend);
    }
}

总结一下:如果我更改可执行文件或源文件的名称(因此,如果我正在处理另一个文件),我的窗口将完全拉伸。

请注意,较小的尺寸(例如 200*140 像素)不会发生这种情况。

我尝试在一个完全不同的文件夹中工作,重新安装 SDL 和编译器,但似乎没有任何效果。

我不知道问题出在哪里,有人可以给我一些建议吗?

谢谢你的时间。

c windows exe sdl-2
© www.soinside.com 2019 - 2024. All rights reserved.