diff options
3 files changed, 9 insertions, 19 deletions
diff --git a/src/tools/clangbackend/clangbackendmain.cpp b/src/tools/clangbackend/clangbackendmain.cpp index 1e95db3ef3..76aff06d3b 100644 --- a/src/tools/clangbackend/clangbackendmain.cpp +++ b/src/tools/clangbackend/clangbackendmain.cpp @@ -57,25 +57,11 @@ QString processArguments(QCoreApplication &application) } #ifdef Q_OS_WIN -struct MessageHandler { - MessageHandler(QtMessageHandler handler) - { - defaultHandler = qInstallMessageHandler(handler); - } - - ~MessageHandler() - { - qInstallMessageHandler(defaultHandler); - } - - static QtMessageHandler defaultHandler; -}; - -QtMessageHandler MessageHandler::defaultHandler = nullptr; - -static void messageOutput(QtMsgType type, const QMessageLogContext &context, const QString &msg) +extern "C" void OutputDebugStringW(const wchar_t* msg); +static void messageOutput(QtMsgType type, const QMessageLogContext &/*context*/, + const QString &msg) { - MessageHandler::defaultHandler(type, context, msg); + OutputDebugStringW(msg.toStdWString().c_str()); std::wcout << msg.toStdWString() << std::endl; if (type == QtFatalMsg) abort(); @@ -85,7 +71,7 @@ static void messageOutput(QtMsgType type, const QMessageLogContext &context, con int main(int argc, char *argv[]) { #ifdef Q_OS_WIN - MessageHandler messageHandler(&messageOutput); + qInstallMessageHandler(&messageOutput); #endif QCoreApplication::setOrganizationName(QStringLiteral("QtProject")); QCoreApplication::setOrganizationDomain(QStringLiteral("qt-project.org")); diff --git a/src/tools/clangpchmanagerbackend/clangpchmanagerbackendmain.cpp b/src/tools/clangpchmanagerbackend/clangpchmanagerbackendmain.cpp index 7a871bb033..a4b5ec3b52 100644 --- a/src/tools/clangpchmanagerbackend/clangpchmanagerbackendmain.cpp +++ b/src/tools/clangpchmanagerbackend/clangpchmanagerbackendmain.cpp @@ -247,8 +247,10 @@ struct Data // because we have a cycle dependency }; #ifdef Q_OS_WIN +extern "C" void OutputDebugStringW(const wchar_t* msg); static void messageOutput(QtMsgType type, const QMessageLogContext &, const QString &msg) { + OutputDebugStringW(msg.toStdWString().c_str()); std::wcout << msg.toStdWString() << std::endl; if (type == QtFatalMsg) abort(); diff --git a/src/tools/clangrefactoringbackend/clangrefactoringbackendmain.cpp b/src/tools/clangrefactoringbackend/clangrefactoringbackendmain.cpp index aaef21b608..bca4551b2f 100644 --- a/src/tools/clangrefactoringbackend/clangrefactoringbackendmain.cpp +++ b/src/tools/clangrefactoringbackend/clangrefactoringbackendmain.cpp @@ -131,8 +131,10 @@ struct Data // because we have a cycle dependency }; #ifdef Q_OS_WIN +extern "C" void OutputDebugStringW(const wchar_t* msg); static void messageOutput(QtMsgType type, const QMessageLogContext &, const QString &msg) { + OutputDebugStringW(msg.toStdWString().c_str()); std::wcout << msg.toStdWString() << std::endl; if (type == QtFatalMsg) abort(); |