在尝试在 Windows 10 上的 Eclipse CDT 1909 中构建和运行我最初在 MacOS 上的 Eclipse 中创建的项目时,我遇到了类似的问题。
我发现以下步骤使用 minGW64 编译器有效。
RMB 点击项目并选择属性。在 Project Properties > C/C++ Build 中创建一个新的 C/C++ Build Configuration,通过 LMB 点击 Manage Configurations 和 LMB 点击 New,将其命名为 Debug_Windows,将 Copy Setting from 设置为 Default configuration,使其处于活动状态,LMB 点击 OK,将 Configuration 设置为调试_Windows。
将 Project Properties > C/C++ Build > Builder Settings > Build Command > Current Builder 设置为 CDT Internal Builder
将 Project Properties > C/C++ Build > Builder Settings > Tool Chain Editor > Current toolchain 设置为 MinGW GCC
将 Project Properties > C/C++ Build > Builder Settings > Tool Chain Editor > Current builder 设置为 CDT Internal Builder
将以下路径添加到 Project Properties > C/C++ Build > Settings > GCC C++ Compiler > Includes "C:\Applications\Library\SDL2-2.0.9\x86_64-w64-mingw32\include\SDL2"
将以下路径添加到 Project Properties > C/C++ Build > Settings > GCC C++ Linker > Libraries "C:\Applications\Library\SDL2-2.0.9\x86_64-w64-mingw32\lib"
将以下库添加到 Project Properties > C/C++ Build > Settings > GCC C++ Linker > Libraries,顺序为 SLD2main SDL
导航到项目属性 > 运行/调试设置,LMB 单击新建,选择 C/C++ 应用程序,LMB 单击确定,在 C/C++ 应用程序字段中输入 Debug_Windows\project_name.exe(将 project_name 替换为正确的值)。
将构建配置更改为 Debug_Windows。
关闭项目属性。
在包含主函数的文件顶部添加预处理器指令#define SDL_MAIN_HANDLED。如果没有预处理器指令,程序将无法正确链接。
运行程序 RMB 单击项目并选择 Run as > Run Configurations 并选择为构建创建的运行配置。
将 SDL2.dll 复制到项目目录结构的顶层,就像复制到 Debug 或 Debug_Windows 目录一样,每次构建项目时都会将其删除。
我发现的关键点是没有必要在链接器库中包含 mingw32 并且 #define SDL_MAIN_HANDLED 需要在包含 main 的文件中并且在 #include 之前。