2013-07-10 46 views
4

我试图在Windows上使用Eclipse Kepler和MinGW创建SDL2项目。 我已经在MinGW(.a)中的C:\ MinGW \ lib中添加了SDL2库,SDL2包含在MinGW(C:\ MinGW \ include \ SDL2)中,并且我还在项目属性中添加了 - > C/C++ general - >路径和符号 - > librairies依次下列行:在Windows上使用Eclipse和MinGW设置SDL2

的mingw32
SDL2main
SDL2

然后我在MinGW的C++接头把 '-mwindows' 在该行的 “命令线图案”

的端部

我还为入口点添加了-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; 
} 

这是构建控制台:

 
Info: Internal Builder is used for build 
g++ "-LC:\\MinGW\\lib" -o Test.exe main.o -lmingw32 -lSDL2main -lSDL2 -mwindows 
main.o: In function `SDL_main': 
C:\Users\olivi_000\workspace\Test\Debug/../main.cpp:7: undefined reference to `SDL_CreateWindow' 
C:\Users\olivi_000\workspace\Test\Debug/../main.cpp:13: undefined reference to `SDL_DestroyWindow' 
C:\MinGW\lib/libmingw32.a(main.o):main.c:(.text.startup+0xa7): undefined reference to `[email protected]' 
collect2.exe: erreur: ld a retourné 1 code d'état d'exécution 

有什么不对?

+0

问题是,链接器找不到'SDL_CreateWindow'函数,这可能意味着从eclipse传递给gcc的选项是错误的。如果显示eclipse调用的实际构建命令,可以给出更多细节。 – greatwolf

+0

嗨,我编辑我的帖子,以显示实际的构建命令 – Oliveira

+0

您正在构建一个可执行文件,因此'-shared'不应该在链接过程中。 – greatwolf

回答

4

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