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

mingw32
SDL2主要
SDL2

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

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

但是编译器给我错误:

main.cpp:7:对“SDL_CreateWindow”的 undefined reference

这是代码:

#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”的 undefined reference
C:\ Users \ olivi_000 \ workspace \ Test \ Debug /../ main.cpp:13:对'SDL_DestroyWindow'的 undefined reference
C:\ MinGW \ lib / libmingw32.a(main.o):main.c :(。text.startup + 0xa7):对WinMain @ 16的 undefined reference
collect2.exe:错误:执行代码1的重新执行

怎么了 ?

最佳答案

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

07-24 09:44
查看更多