当我尝试在 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 设置为Debug_Windows。
设置项目属性 > C/C++ Build > Builder Settings > Build Command > Current Builder to CDT Internal Builder
设置项目属性 > C/C++ Build > Builder Settings > Tool Chain Editor > Current toolchain to MinGW GCC
设置项目属性 > C/C++ Build > Builder Settings > Tool Chain Editor > Current builder to 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
在包含 main 函数的文件的顶部。
如果没有预处理器指令,程序将无法正确链接。
运行程序 RMB 点击项目并选择 Run as > Run Configurations 并选择为构建创建的运行配置。
将SDL2.dll复制到项目目录结构的顶层,就像复制到Debug或Debug_Windows目录一样,每次构建项目时都会删除。
我发现的关键点是没有必要在链接器库中包含 mingw32 并且 #define SDL_MAIN_HANDLED 需要在包含 main 的文件中并且在 #include 之前。