首页 > 解决方案 > SDL_Init(SDL_INIT_VIDEO) 返回 1

问题描述

只是想知道,有人遇到过这个问题:

我正在使用 Visual Studio Community,在添加类并将SDL_Init(SDL_INIT_VIDEO) 从主函数移动到 Someclass.cpp 之后,我的窗口不再出现。SDL_Init 返回 1。

我认为这只是我的代码相关问题,但我复制了导师代码,但在我的环境中效果不佳。(他的 eclipse 正常工作)当从 main.cpp 调用 SDL_Init(SDL_INIT_VIDEO) 时,它曾经正常工作。我试图在项目/设置/链接器/输入/附加依赖项中添加其他依赖项,但没有成功:(也许我做错了什么。SDL 窗口仍然没有出现。

这是初始化 SDL 视频的函数:

SDL_Window* Screen::Init(uint32_t w, uint32_t h, uint32_t mag){
if (SDL_Init(SDL_INIT_VIDEO))
{
    std::cout << "Error SDL_Init Failed" << SDL_GetError() << std::endl;
    return nullptr;
}

mWidth = w;
mHeight = h;
moptrWindow = SDL_CreateWindow("Arcade", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, mWidth * mag, mHeight * mag, 0);

if (moptrWindow)
{
    mnoptrWindowSurface = SDL_GetWindowSurface(moptrWindow);
    SDL_PixelFormat* pixelFormat = mnoptrWindowSurface->format;
    Color::InitColorFormat(pixelFormat);
    mClearColor = Color::Black();
    mBackBuffer.Init(pixelFormat->format, mWidth, mHeight);
    mBackBuffer.Clear(mClearColor);
}

return moptrWindow;

}

调用 Init 的主要函数:

int main(int argc, const char* argv[]){
Screen theScreen;
theScreen.Init(SCREEN_WIDTH, SCREEN_HEIGHT, MAGNIFICATION);
theScreen.Draw(SCREEN_WIDTH/2, SCREEN_HEIGHT/2, Color::Yellow());
theScreen.SwapScreens();

SDL_Event sdlEvent;
bool running = true;

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

return 0;

}

输出是:

1

C:\Users\MyPC\projects\drawing-line\Debug\drawing-line.exe(进程 13032)以代码 0 退出。按任意键关闭此窗口。. .

如果有人想尝试我的代码,可以链接到 google drive: 这就是整个项目

谢谢你。卢克

标签: c++visual-studio

解决方案


最终我解决了这个问题。我将所有设置更改为 X64 并删除了const in: int main(int argc,const char* argv[])。现在可以正常工作了。花了我一段时间:)


推荐阅读