C++ 在QT上安装SDL
我尝试了将近5个小时,仍然无法设置在QT上运行helloWorld SDL。请帮帮我。 1) 首先,我从SiteDeveloper软件包下载 SDL2-devel-2.0.1-mingw.tar.gz(mingw 32/64位) 还有i686和simple x86,我需要添加哪一个? 我下载这个软件包 2) 然后我将所有bin、lib、include添加到 C:\Qt\Qt5.0.2\5.0.2\mingw47\u 32 我的专业文件:C++ 在QT上安装SDL,c++,qt,sdl,C++,Qt,Sdl,我尝试了将近5个小时,仍然无法设置在QT上运行helloWorld SDL。请帮帮我。 1) 首先,我从SiteDeveloper软件包下载 SDL2-devel-2.0.1-mingw.tar.gz(mingw 32/64位) 还有i686和simple x86,我需要添加哪一个? 我下载这个软件包 2) 然后我将所有bin、lib、include添加到 C:\Qt\Qt5.0.2\5.0.2\mingw47\u 32 我的专业文件: INCLUDEPATH += $$PWD/../../..
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
现在它正在运行,但在启动时崩溃)
#包括“SDL2/SDL.h”
#包括“SDL2/SDL_main.h”
//#包括“SDL.h”
#未定义主
使用名称空间std;
//int main()
//int main(int,char**)
int main(int argc,char*argv[])
{
//启动SDL
SDL_Init(SDL_Init_EVERYTHING);
SDL和Qt都能提供OpenGL绘图界面吗?既然已经使用了Qt,为什么还需要SDL
不管怎样,那
undefined reference to `SDL_Init'
是链接器错误,发生此错误的原因是您的标志中有-libSDL2main.a
而不是-lSDL2main
,因此找不到文件及其符号
第一次更新:
这可能是签名不匹配
您应该使用通常的intmain(int,char**)
signature声明main函数,因为参数对于SDL很重要,因为它试图捕获它们
检查以下答案:
第二次更新:
0x00000135表示未找到DLL(在运行时)
您可以使用此工具()检查是否找到了所有库-可能是某些不满意的mingw支持库依赖正在扼杀您的程序。好的,让我们来回答我的问题
我使用了错误的x86_64-w64-mingw32。我需要使用
i686-w64-W32
忘记将SDL2.dll添加到C:/Windows或带有*.exe的文件夹中
右main是“intmain(intargc,char*argv[])”
正确的路径是:
INCLUDEPATH += C:\SDL2-2.0.1\i686-w64-mingw32\include
LIBS += -L"C:\SDL2-2.0.1\i686-w64-mingw32\lib" \
-lmingw32\
-lSDL2main\
-lSDL2\
此外,dependency walker告诉我添加libwinpthread-1.dll,我还
将此添加到文件夹中
谢谢大家的帮助!省略.a扩展名:-lSDL2main。另外,当涉及到静态libs时,链接器行上的顺序很重要。请签出updateit,这令人惊讶,但我需要main,我取消了对它的注释,没有办法0x0000135表示未找到DLL(在运行时)为你的操作系统找一个合适的版本,并检查是否找到了所有的库-也许一些不满意的mingw支持库依赖正在扼杀你的程序。我以前也遇到过这种情况。
undefined reference to `SDL_main'
INCLUDEPATH += C:\SDL2-2.0.1\i686-w64-mingw32\include
LIBS += -L"C:\SDL2-2.0.1\i686-w64-mingw32\lib" \
-lmingw32\
-lSDL2main\
-lSDL2\