Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在QT上安装SDL_C++_Qt_Sdl - Fatal编程技术网

C++ 在QT上安装SDL

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/../../..

我尝试了将近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/../../../../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\