【发布时间】:2017-10-05 21:54:07
【问题描述】:
我一直在尝试重新运行一个使用 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 获得了 w64 版本的 mingw。它的安装程序有多个版本输入,所以我选择 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,而且我知道我想出了一种方法来让它工作,但我无法重现。
【问题讨论】:
-
更新:我能够完全完成willusher.io/pages/sdl2 的教程,因此 sdl 窗口会出现并输出我想要的任何内容。我不能做 SDL_INIT_EVERYTHING 或提到的其他 init 宏,但 SDL_Init(SDL_INIT_VIDEO|SDL_INIT_AUDIO|SDL_INIT_EVENTS) 不会导致任何错误,至少到目前为止,我可以做我需要做的事情。
标签: c++ windows eclipse mingw sdl-2