Fehler mit Standardkonstruktor in qmutex.h
-
Hallo,
in VS 2019 erhalte ich mit der Implementierung von QMutex die folgende Fehlermeldung.
"E2422 Der Standardwert des Standardkonstruktors kann nicht constexpr sein, da der entsprechende implizit deklarierte Standardkonstruktor nicht constexpr wäre"
Der Fehler soll in der Datei qmutex.h in Zeile 133 stehen. Das Programm lässt sich damit normal kompilieren, allerdings verhält es sich nicht so wie es soll und es könnte sein, das der QMutex der Grund ist.
Ich vermute auch mal das die Ursache hierfür eine tieferliegende ist.
Weiß jemand Rat?
-
@jsulm
Der Fehler wird nicht gemeldet, wenn ich alles was mit QMutex zu tun hat auskommentiere (also vor allem QMutex nicht inkludiere). EDIT: Das der Fehler nicht angezeigt wird wenn ich QMutex nicht einbinde ist ja normal. Habe ich gerade selbst gemerkt.. Knoten im Kopf^^Hier ein Ausschnitt wie es vor dem Auskommentieren aussah:
// .h #include <QMutex> #include <QMutexLocker> class Threading : public QObject, public QOpenGLWidget { Q_Object public: Threading(QObject* parent); void paintWindow(); private: QMutex m_mutex; }; // .cpp Threading::Threading(QObject* parent) { qRegisterMetaType<CComPtr<IDeckLinkVideoFrame>>("CComPtr<IDeckLinkVideoFrame>"); //Initializing GLEW if (glewInit() != S_OK) qDebug() << "Initializing GLEW does not work."; //Initializing Screen Preview Helper ScreenPreviewHelperInstance(m_previewHelper); } void Threading::paintWindow() { if (m_previewHelper != nullptr) { QMutexLocker(&m_mutex); m_previewHelper->PaintGL(); qDebug() << "VideoScreen: paintGL was called."; } }
-
Qt 6.1.2 kann definitiv mit MSVC2019 ohne Fehler kompiliert werden - da ist irgendwas in deiner Config falsch. Was für eine MSVC-Version hast Du genau?
-
@Christian-Ehrlicher
MSVC2019 64BitEs gibt Meldungen zu Fehlern in den Dateien qmutex.h, qproperties.h und qmetatype.h
Das ist die Config der .pro Datei
TEMPLATE = app TARGET = VideoMeter DESTDIR = ./x64/Debug CONFIG += c++17 LIBS += -L"." DEPENDPATH += . MOC_DIR += . OBJECTS_DIR += debug UI_DIR += . RCC_DIR += . HEADERS += ./qvideometer.h SOURCES += ./qvideometer.cpp \ ./main.cpp FORMS += ./qvideometer.ui RESOURCES += qvideometer.qrc QT += widgets QT += gui QT += core
-
@makopo said in Fehler mit Standardkonstruktor in qmutex.h:
MSVC2019 64Bit
Das weiß ich schon. Ich wollte die exakte Version.
-
6.1.2-0-202106290506
Versionsnummer laut Qt Installer. Ich wüsste auch sonst nicht wodran ich die extakte Version erkennen kann...
-
@makopo said in Fehler mit Standardkonstruktor in qmutex.h:
ich dachte es geht um die Version des Compilers
Ist richtig, wobei diese von der Visual Studio version abgeleitet werden kann, wenn ich mich nicht irre.
-
16.10.2 ist der aktuellste MSVC compiler.
Bitte erzeuge ein neues Qt-Projekt und in der main.cpp inkludierst Du nur QMutex und schau ob es kompiliert. -
@Christian-Ehrlicher
Ich bin wirklich verwirrt, wenn ich ein neues Projekt anlege erhalte ich 468 Fehler beim Kompilieren. Quer durch sämtliche Q-Module. Wenn ich mein "altes" Projekt auf 6.1.2 umstelle erhalte ih 10 Fehler.
Was ich getan habe? Ich habe in VS 2019 eine QWidgets Application angelegt.
In den Projekteinstellungen habe ich dann die folgenden Anpassungen vorgenommen- VC++ Verzeichnisse/Includeverzeichnisse -> include-verzeichnis der Version eingebunden
- VC++ Verzeichnisse/Bibliotheksverzeichnisse -> lib Verzeichnis der Version eingebunden
- C++/Zusätzliche Includeverzeichnisse -> include-Verzeichnis eingebunden
- Linker/Allgemein/Zusätzliche Bibliotheksverzeichnisse -> lib Verzeichnis eingebunden.
Die 468 Fehler wurden schon vor Anpassung der Projekteigenschaften angezeigt.
Mit Version 5.13.2. kompiliert es ohne Probleme. -
Nutze cmake oder qmake aber erzeuge kein rojekt für Qt von Hand...
-
Ich benutze die QtVS Tools für Visual Studio. Dort kann man ja quasi automatisch ein neues Projekt anlegen. Die Projekteinstellung muss ich ja im Grunde auch gar nicht vornehmen, da die durch VS nach Wahl der QT Version dynamisch gesetzt werden.
Mit Qt Creator funktioniert dann auch die Version 6.1.2.