使用eclipse和mingw设置SDL2:SDL_INIT崩溃

时间:2017-05-08 01:24:05

标签: c++ windows eclipse mingw sdl-2

我一直在尝试重新运行使用SDL2的旧c ++ eclipse项目,但尝试将我的系统重新创建到SDL2的工作点正在变得令人生气。此时我试图重新安装eclipse,mingw和sdl,尝试32位和64位版本,但没有组合工作。我认为这是我安装所有问题的方式的问题,这就是为什么我会过分明确我做了什么,但显然我不确定。 。如果您只关心SDL错误,请跳过下两段。

我使用的是Windows 7 64位计算机。我的第一直觉是从他们主站点的下载链接下载64位版本的Eclipse Neon for c ++。 因为我正在使用Windows 64,所以我在(https)sourceforge.net/projects/mingw-w64上获得了mingw的w64版本。它的安装程序有多个版本输入,所以我选择了7.1.0,x86_64,win32,seh和0选项。 我在eclipse c ++构建环境中包含了一个新mingw64文件夹的路径,并且我能够选择“mingw gcc'新项目中的工具链并成功运行新的helloworld项目。

然后我按照https://www.caveofprogramming.com/c-for-complete-beginners/setting-up-sdl-windows.html中的步骤尝试添加SDL2。我从libsdl下载页面获得了最新版本SDL 2.0.5,为MinGW 32/64位版本选择了开发库。然后我解压缩它,选择x86_64-w64-mingw32版本并将lib / include文件(包括cmake和pkgconfig子文件夹)从该文件夹移动到之前的新mingw64文件夹。

此时我在教程的第6步;我继续没有任何问题(在步骤17我添加相同的mingw32 / SDL2main / SDL2链接器:这是正确的吗?),一旦项目生成,将SDL2.dll从初始SDL2 \ bin文件夹添加到调试文件夹。但是,当我复制他的示例代码并使用调试器时,SDL_Init(SDL_INIT_EVERYTHING)发生错误;我无法介入。它不会在控制台looks like this in the debugger上输出任何内容,当我尝试恢复时程序停止工作并终止。没有错误代码或任何错误。

我发现的最相关的解决方案总是涉及到32位用于所有内容,但重复上述过程使用32位版本的上述结果会在同一位置出现相同的错误。我查看了SDL wiki并尝试了SDL_INIT的所有可能输入:当我尝试SDL_INIT_TIMER,SDL_INIT_JOYSTICK和SDL_INIT_GAMECONTROLLER时,它以相同的方式崩溃,但其他输入没有导致任何错误。我最终想要使用SDL_image和SDL_tff,就像我以前做过的项目一样,我知道我已经找到了一种让它无法重现的方法。

2 个答案:

答案 0 :(得分:0)

您必须使用#include <SDL2/SDL.h>才能使用

此外,我建议不要使用using namespace std;,因为如果您的代码进一步发展会产生问题。其次,我强烈建议使用块来处理异常,在发生错误时没有它们,你将不知道它来自何处。

以下是一个例子:

#include <stdexcept>

try
{
if (SDL_Init(SDL_INIT_VIDEO) > 0)
  {
    throw(::std::runtime_error("SDL failed to initialise! ERROR: "));
  }
}
catch (std::runtime_error const& msg)
{
    printf("%s", msg.what());
    if (SDL_GetError() != NULL)
    {
        printf("%s", SDL_GetError());
    }
}

答案 1 :(得分:0)

非常不确定这是否是实际解决方案,但重新安装mingw与自定义选项7.1.0,x86_64,posix,sjlj和0使INIT_EVERYTHING工作没有崩溃并完全执行它应该如何。