// FlightController.cpp: 定义应用程序的入口点。 // #include #include #include #include #include #include "MainWindow.h" #include "VlcMediaPlayer.h" #include "SpdLog.h" #include "CrashHandler.h" #include #include #pragma comment(lib, "DbgHelp.lib") using namespace std; LONG CreateCrashHandler(EXCEPTION_POINTERS* pException) { QString cur = QDateTime::currentDateTime().toString("yyyy_MM_dd_hh_mm_mm_ss"); QString dumpFileName = qApp->applicationName() + "_Dump_" + cur + ".dump"; EXCEPTION_RECORD* record = pException->ExceptionRecord; QString errCode = QString::number(record->ExceptionCode, 16); QString errAddr = QString::number((uint)record->ExceptionAddress, 16); QString errFlag = QString::number((uint)record->ExceptionFlags, 16); QString errPara = QString::number(record->NumberParameters, 16); HANDLE dumpHandle = CreateFile((LPCWSTR)dumpFileName.utf16(), GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL); if (dumpHandle != INVALID_HANDLE_VALUE) { MINIDUMP_EXCEPTION_INFORMATION dumpInfo; dumpInfo.ExceptionPointers = pException; dumpInfo.ThreadId = GetCurrentThreadId(); dumpInfo.ClientPointers = TRUE; MiniDumpWriteDump(GetCurrentProcess(), GetCurrentProcessId(), dumpHandle, MiniDumpNormal, &dumpInfo, NULL, NULL); CloseHandle(dumpHandle); } QMessageBox::warning(nullptr, "dump", QString("ErrorCode%1 ErrorAddr:%2 ErrorFlag:%3 ErrorPara:%4").arg(errCode) .arg(errAddr).arg(errFlag).arg(errPara), QMessageBox::Ok); return EXCEPTION_EXECUTE_HANDLER; } int main(int argc, char* argv[]) { //#ifdef Q_OS_WIN // SetUnhandledExceptionFilter((LPTOP_LEVEL_EXCEPTION_FILTER)CreateCrashHandler); //#endif QApplication app(argc, argv); InstallCrashHandler(); InitSpdlog("ProjectorDisplay_log", "logs/ProjectorDisplay_log.txt", 5); int fontId = QFontDatabase::addApplicationFont(QApplication::applicationDirPath() + "/ProjectDisplay/font/font.ttf"); QStringList fontFamilies = QFontDatabase::applicationFontFamilies(fontId); if (fontFamilies.size() <= 0) { qDebug() << "load font failed:" ; UninitSpdlog(); return -1; } VlcMediaPlayer::Init(); MainWindow mainWindow(fontFamilies); mainWindow.show(); mainWindow.Adjust(); int ret = app.exec(); VlcMediaPlayer::Uninit(); UninitSpdlog(); return ret; }