我尝试了近5个小时仍然无法设置在QT上运行helloWorld SDL。请帮我。 1)首先我从站点开发人员包下载 SDL2-devel-2.0.1-mingw.tar.gz(MinGW 32/64位) 还有i686和简单的x86,我需要添加哪些? 我下载这个包
2)然后我添加所有bin,lib,include C:\ Qt的\ Qt5.0.2 \ 5.0.2 \ mingw47_32
我的专业档案:
INCLUDEPATH += $$PWD/../../../../5.0.2/mingw47_32/include
## Glut / OpenGL
unix|win32: LIBS += -L$$PWD/../../../../5.0.2/mingw47_32/lib/ -lglut32
unix|win32: LIBS += -lOPENGL32
当我启动应用时,会收到错误。
C:\Qt\Qt5.0.2\Tools\QtCreator\bin\check_sdl\main.cpp:10: ошибка: undefined reference to `SDL_Init'
在Pro文件中添加行
INCLUDEPATH += "C:\\SDL2-2.0.1\\i686-w64-mingw32\\include"
LIBS += -L"C:\\SDL2-2.0.1\\i686-w64-mingw32\\lib\\" \
-lmingw32\
-libSDL2main.a\
-lSDL2_test.a\
然后错误
:-1: ошибка: cannot find -libSDL2main.a
然而这个文件就在那里。
所以我不知道该怎么做:/
更新:
INCLUDEPATH += "C:\\SDL2-2.0.1\\x86_64-w64-mingw32\\include\\SDL2"
LIBS += -L"C:\\SDL2-2.0.1\\x86_64-w64-mingw32\\bin\\SDL2"
再次未定义SDL Q_Q
更新2:
INCLUDEPATH += C:\SDL2-2.0.1\i686-w64-mingw32\include
LIBS += -L"C:\SDL2-2.0.1\i686-w64-mingw32\lib" \
-lmingw32\
-lSDL2main\
-lSDL2\
#include "SDL2/SDL.h"
using namespace std;
int main()
//int main(int argc, char *argv[])
{
//Start SDL
SDL_Init( SDL_INIT_EVERYTHING );
SDL_Quit();
return 0;
}
\Users\slouken\release\SDL\SDL2-2.0.1-source\src\main\windows\SDL_windows_main.c:140: ошибка: undefined reference to `SDL_main'
更新3 现在它正在运行,但在开始时崩溃了)
#include "SDL2/SDL.h"
#include "SDL2/SDL_main.h"
//#include "SDL.h"
#undef main
using namespace std;
//int main()
//int main(int, char**)
int main(int argc, char *argv[])
{
//Start SDL
SDL_Init( SDL_INIT_EVERYTHING );
cout << "hell";
int i = 4 +4 ;
cout << "i is: " << i;
//Quit SDL
// SDL_Quit();
return 0;
}
崩溃错误0x00000135
答案 0 :(得分:1)
SDL和Qt都提供OpenGL绘图表面 - 为什么在使用Qt时需要SDL?
无论如何,
undefined reference to `SDL_Init'
是一个链接器错误,因为你的标志中有-libSDL2main.a
而不是-lSDL2main
,所以找不到文件及其符号。
undefined reference to `SDL_main'
这可能是签名不匹配。
您应该使用通常的int main(int, char**)
签名声明main函数,因为参数对SDL很重要,因为它试图捕获它们。
检查这个答案: SDL Error Undefined symbols for architecture x86_64 "_SDL_main"
0x00000135表示 DLL未找到(在运行时)。
您可以使用此工具(http://dependencywalker.com)来检查是否找到了所有库 - 也许某些不满意的mingw支持库依赖性会导致您的程序被终止。
答案 1 :(得分:0)
好的,让我们回答一下我的烦恼。
正确的路径是:
INCLUDEPATH += C:\SDL2-2.0.1\i686-w64-mingw32\include
LIBS += -L"C:\SDL2-2.0.1\i686-w64-mingw32\lib" \
-lmingw32\
-lSDL2main\
-lSDL2\
谢谢大家的帮助!