这不是一个紧迫的问题,但在与SDL取得联系时,我只想了解一些事情。
所以,我开始阅读this tutorial并实现了以下代码段:
SDL_Init(SDL_INIT_EVERYTHING);
SDL_Delay(2000);
SDL_Quit();
在教程中,据说,控制台窗口应在2秒后打开并隐藏。我正在使用eclipse,而在运行时没有任何反应。这似乎是this one之类的问题,但相反,我使用的是Linux。另一件事是,我可以从控制台运行它,它也没有发生。之后,我从问题中读取other tutorial并插入以下行来创建一个窗口:
SDL_Window *window = 0;
window = SDL_CreateWindow("Hello World!",
SDL_WINDOWPOS_CENTERED,
SDL_WINDOWPOS_CENTERED,
640, 480,
SDL_WINDOW_SHOWN);
这对我的问题没有任何改变,没有显示任何窗口,但如果我将SDL_Init()
的输出写入控制台,它将返回' 0' 0 (成功)从日食和' -1'从终端运行时(某些错误代码)。我开始使用optirun(eclipse和终端中的最终程序)。
之后,我只是尝试实现本教程的其余部分并使用SDL创建了一个OpenGL窗口,依此类推。我没有改变任何其他东西,但它适用于eclipse并在终端内,现在显示窗口。
有人知道为什么现在这样做以及为什么eclipse和终端之间存在差异?
答案 0 :(得分:1)
你的意思是什么都没有发生? 如果您在运行程序时甚至没有获得控制台窗口,那么您应该请求它,即在VS上它将是Linker-> SubSystem-> Console。
另一件事是,我可以从控制台运行它,它也没有发生。
您期望发生什么?控制台窗口已经打开,因此程序应该在2秒内不执行任何操作并退出。
从eclipse运行时,' -1' ..有没有人知道为什么现在这样做以及为什么eclipse和终端之间存在差异?
调用SDL_GetError()并自行查找! :)
if (SDL_Init(SDL_INIT_EVERYTHING) < 0) {
printf("SDL_Init failed: %s\n", SDL_GetError());
}