SDL with Qtcrator

SDL with Qtcrator

本文关键字:Qtcrator with SDL      更新时间:2023-10-16

我已经将qtcreator用于控制台应用程序。现在我想将它与 SDL1 一起使用,因为我有一个关于 SDL1 的教程,我想在 qtcreator 上学习 SDL,但似乎 qtcreator 有 2 个选项,首先是 consol 应用程序,其次是使用 qt 的界面和窗口应用程序。因此,我可以使用 SDL 生成的窗口吗?我做了同样的研究,我已经将 SDL 库添加到 qmake 中,但它不起作用

我的文件 *.pro

    TEMPLATE = app
CONFIG += console
CONFIG -= app_bundle
CONFIG -= qt

LIBS += -L C:/Qt/Tools/SDL/SDL1/lib -lmingw32 -lSDLmain -lSDL -mwindows
INCLUDEPATH += C:/Qt/Tools/SDL/SDL1/include/
SOURCES += main.cpp
include(deployment.pri)
qtcAddDeployment()

我的主.cpp

#include <stdlib.h>
#include <stdio.h>
#include <SDL/SDL.h>
void pause();
int main(int argc, char *argv[])
{
    SDL_Init(SDL_INIT_VIDEO); // Initialisation de la SDL
    SDL_SetVideoMode(640, 480, 32, SDL_HWSURFACE); // Ouverture de la fenêtre
    pause(); // Mise en pause du programme
    SDL_Quit(); // Arrêt de la SDL
    return EXIT_SUCCESS; // Fermeture du programme
}
void pause()
{
    int continuer = 1;
    SDL_Event event;
    while (continuer)
    {
        SDL_WaitEvent(&event);
        switch(event.type)
        {
            case SDL_QUIT:
                continuer = 0;
        }
    }
}

我有这个错误

 C:UsersPhenixDocumentsc++ projecttd7test3main.cpp:7: avertissement : unused parameter 'argc' [-Wunused-parameter]  int main(int argc, char *argv[])
    C:UsersPhenixDocumentsc++ projecttd7test3main.cpp:7: avertissement : unused parameter 'argv' [-Wunused-parameter]    int main(int argc, char *argv[])
    crt0_c.c:-1: erreur : undefined reference to `WinMain@16'
    collect2.exe:-1: erreur : error: ld returned 1 exit status

这是我的SDL1目录,目录末尾有更多文件,但我认为它们并不重要

Test
Share
Man 
Lib
Include
Docs
Build-scripts
bin

非常感谢你帮助我

QtCreator 有 2 个选项,第一个 Consol 应用程序,其次是使用 Qt 的界面和窗口应用程序。那么我可以使用 SDL 生成的窗口吗

您现在也应该选择控制台应用程序,因为使用 Qt 选择窗口应用程序的第二个选项意味着您必须使用 Qt 框架来创建窗口,而不是您想要的 SDL。

选择控制台选项,错误也应该消失;因为对于使用Qt的后一个选项,你应该提供qMain而不是普通C++程序通常提供的main

由于您使用的是 MinGW,因此您可以将-mwindows标志传递给链接器,以摆脱启动应用程序时与 SDL 窗口一起显示的其他控制台窗口。

我找到了一个解决方案 这是我的结局 *.pro 文件

    TEMPLATE = app
CONFIG += console  # supprime cette ligne si t'as pas envie de voir de console lors de l'execution du programme
CONFIG -= app_bundle
CONFIG -= qt
LIBS += -L C:/Qt/Tools/SDL/SDL1/lib -lSDL -lSDLmain
INCLUDEPATH += C:/Qt/Tools/SDL/SDL1/include/

win32:QMAKE_LIBS_QT_ENGTRY -= -lqtmain
win32-g++:DEFINES -=QT_NEEDS_QMAIN
QMAKE_LFLAGS += -lmingw32 -lSDLmain -lSDL -mwindows
QMAKE_LINK +=-lmingw32 -lSDLmain -lSDL -mwindows
SOURCES += main.cpp

我没有将 SDL.dll 文件添加到 SysWOW64 中。 如果编译显示没有错误但窗口未打开,则必须添加。