提问人:K. Russell Smith 提问时间:10/13/2023 更新时间:10/13/2023 访问量:27
为什么 QT 程序在 SDL 启动时崩溃 (C4Droid)
Why does QT program crash upon SDL startup (C4Droid)
问:
我正在尝试将我编写的 SDL2 游戏封装在 QT 应用程序中,用于 GUI 控件;我正在遵循 GitHub 的一个例子,但它崩溃了。我减少了它,发现SDL_Init导致了这种情况。由于我无法在 C4Droid 上看到控制台输出,因此我对此进行调试的能力有限。下面是最小的示例:
main.cpp:
#include <QApplication>
#include <SDL2/SDL.h>
#include "SDLWin.hpp"
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
if(SDL_Init(SDL_INIT_VIDEO) < 0)
{
printf("SDL failed to initialize: %s\n", SDL_GetError());
}
SDLWin win;
win.show();
int retval = app.exec();
SDL_Quit();
return retval;
}
SDLWin 类现在是一个微不足道的 shell,作为通用的 QMainWindow 提供服务,因为简单地初始化 SDL 就是导致崩溃的原因。
SDLWin.hpp:
#ifndef SDLWIN_HPP
#define SDLWIN_HPP
#include <QMainWindow>
#include <QWidget>
class SDLWin : public QMainWindow
{
Q_OBJECT
public:
SDLWin();
~SDLWin();
void SDLInit();
private:
QWidget *main_win;
};
#endif
SDLWin.cpp:
#include "SDLWin.hpp"
#include <QWidget>
SDLWin::SDLWin() : main_win(new QWidget)
{
setWindowTitle("tetris");
setCentralWidget(main_win);
}
SDLWin::~SDLWin()
{}
application.pro:
QT += core uitools widgets gui
HEADERS = ./src/SDLWin.hpp
SOURCES = ./src/main.cpp \
./src/SDLWin.cpp
MOC_DIR = ./src/moc
OBJECTS_DIR = ./src/objects
RCC_DIR = ./src/resource
LIBS += -lSDL2main \
-lSDL2 \
-lSDL2_image \
-lSDL2_ttf \
-lSDL2_mixer
#! [0]
RESOURCES = application.qrc
#! [0]
# install
target.path = $$[QT_INSTALL_EXAMPLES]/widgets/mainwindows/application
INSTALLS += target
simulator: warning(This example might not fully work on Simulator platform)
答: 暂无答案
评论