【问题标题】:Setting up SDL2 with Eclipse and MinGW on Windows在 Windows 上使用 Eclipse 和 MinGW 设置 SDL2
【发布时间】:2026-02-19 11:10:01
【问题描述】:

我正在尝试在 Windows 上使用 Eclipse Kepler 和 MinGW 创建一个 SDL2 项目。 我已经在 C:\MinGW\lib 中的 MinGW (.a) 中添加了 SDL2 库,SDL2 包含在 MinGW(C:\MinGW\include\SDL2) 中,我还在项目属性中添加了 -> C/C++ 常规 -> 路径和符号 -> 按该顺序库以下行:

mingw32
SDL2main
SDL2

然后我将“-mwindows”放在 MinGW C++ 链接器中“命令行模式”行的末尾

我还为入口点添加了 -Dmain=SDL_main...

但是编译器给了我错误:

main.cpp:7:对 `SDL_CreateWindow' 的未定义引用

这是代码:

#include <SDL2/SDL.h>

int main(int, char**)
{
    SDL_Window *pWindow = nullptr;

    pFenetre = SDL_CreateWindow("Test SDL 2.0", 0, 0, 320, 240, SDL_WINDOW_SHOWN);
    if (!pWindow)
    {
        return -1;
    }

    SDL_DestroyWindow(pWindow);

    return 0;
}

这是构建控制台:

信息:内部构建器用于构建 g++ "-LC:\\MinGW\\lib" -o Test.exe main.o -lmingw32 -lSDL2main -lSDL2 -mwindows main.o:在函数“SDL_main”中: C:\Users\olivi_000\workspace\Test\Debug/../main.cpp:7: 未定义对“SDL_CreateWindow”的引用 C:\Users\olivi_000\workspace\Test\Debug/../main.cpp:13:未定义对“SDL_DestroyWindow”的引用 C:\MinGW\lib/libmingw32.a(main.o):main.c:(.text.startup+0xa7): undefined reference to `WinMain@16' collect2.exe: erreur: ld a retourné 1 code d'état d'execution

怎么了?

【问题讨论】:

  • 问题是链接器找不到SDL_CreateWindow 函数,这可能意味着从 Eclipse 传递给 gcc 的选项是错误的。如果您显示 eclipse 调用的实际构建命令,可以提供更多详细信息。
  • 嗨,我编辑了我的帖子以显示实际的构建命令
  • 您正在构建一个可执行文件,因此在链接期间-shared 不应该在那里。
  • 您使用的是什么版本的 mingw gcc?我刚刚使用来自 libsdl.org 的 sdl2 预编译二进制文件在 mingw gcc 4.6.3 上测试了您的代码 sn-p,它工作正常。
  • 嗨,我删除了“-shared”选项,没有任何改变,我仍然有同样的错误加上另一个错误:“未定义对 WinMain 的引用”。今晚我将使用新的构建命令/错误来编辑我的帖子。我正在使用这个版本的 MinGW sourceforge.net/projects/mingw 和 SDL 2 'SDL2-devel-2.0.0-mingw.tar.gz' 的开发库版本:libsdl.org/tmp/download-2.0.php

标签: c++ windows eclipse mingw sdl


【解决方案1】:

确保您使用的是 正确 版本的库。您不能将 64 位导入库与 32 位编译器混合使用。对于您下载的 SDL2 库 (SDL2-devel-2.0.0-mingw.tar.gz),它带有 32 位和 64 位。 i686-w64-mingw32 是 32 位,x86_64-w64-mingw32 是 64 位。

【讨论】:

    最近更新 更多