我在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 退出状态
我只是想知道为什么这个错误取决于我的主要方法,我想使用我想要的主要方法。 为什么会这样,我该如何解决这个问题?
答案 0 :(得分:2)
对不起,你已经坚持了下来。我也更喜欢更简单的主,但SDL并不支持它。
这里有更多关于SDL和Windows世界的主要信息。它没有说为什么你需要他们的主要版本 - 但你做到了。
我得到&#34;未定义的引用&#39; SDL_main&#39;&#34; ...
确保将main()声明为:
#include&#34; SDL.h&#34;
int main(int argc,char * argv [])
答案 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>