C ++ SDL2 - 难以理解的链接错误

时间:2014-10-06 14:13:42

标签: linker sdl-2

我在C ++ CDT Eclipse下设置了SDL2。 我添加了包含路径" ........ SDL2-2.0.3 \ i686-w64-mingw32 \ include",库路径" ........ SDL2 -2.0.3 \ i686的-W64-的mingw32 \ lib中"并添加了库1." mingw32" 2" SDL2main" 3" SDL2&#34 ;. 现在,如果我添加一个带有此内容的main.cpp:

#include <SDL.h>

int main(int argc, char* args[])
{

    return 0;
}

我可以很好地构建项目,但如果我使用它:

#include <SDL.h>

int main()
{

    return 0;
}

项目无法构建,我收到此错误:

  

信息:内部构建器用于构建g ++&#34; -IO:\ Eclipse CDT   Workspace \ SDL OpenGL Lab \ Libraries \ SDL2 \ include \ SDL2&#34; -O0 -g3   -Wall -c -fmessage-length = 0 -o main.o&#34; .. \ main.cpp&#34; g ++&#34; -LO:\ Eclipse CDT工作区\ SDL OpenGL Lab \ Libraries \ SDL2 \ lib&#34; -o   &#34; SDL OpenGL Lab.exe&#34; main.o -lmingw32 -lSDL2main -lSDL2 O:\ Eclipse   CDT Workspace \ SDL OpenGL   Lab \ Libraries \ SDL2 \ lib / libSDL2main.a(SDL_windows_main.o):在功能中   console_main': /Users/slouken/release/SDL/SDL2-2.0.3-source/foo-x86/../src/main/windows/SDL_windows_main.c:140: undefined reference to SDL_main&#39; collect2.exe:错误:ld返回1   退出状态

我只是想知道为什么这个错误取决于我的主要方法,我想使用我想要的主要方法。 为什么会这样,我该如何解决这个问题?

2 个答案:

答案 0 :(得分:2)

对不起,你已经坚持了下来。我也更喜欢更简单的主,但SDL并不支持它。

这里有更多关于SDL和Windows世界的主要信息。它没有说为什么你需要他们的主要版本 - 但你做到了。

  

我得到&#34;未定义的引用&#39; SDL_main&#39;&#34; ...

     

确保将main()声明为:

     

#include&#34; SDL.h&#34;

     

int main(int argc,char * argv [])

https://wiki.libsdl.org/FAQWindows

答案 1 :(得分:0)

我遇到了同样的问题,不得不进行很多操作。 我发现的是在调用SDL.h之前简单的#define SDL_MAIN_HANDLED行。我认为,SDL具有自己的主要特点。 例如,在我的.h文件中,每次都这样写:

#include <stdio.h>
#include <stdlib.h>
#define SDL_MAIN_HANDLED 
#include <SDL.h>
#include <SDL_image.h>
#include <SDL_ttf.h>