Hur använda QT bibliotek i Visual Studio för C++?

Permalänk

Hur använda QT bibliotek i Visual Studio för C++?

Jag har behov utav vissa bibliotek som är skrivna i QT. Men jag kör Visual Studio 2022.

Det jag har gjort är följande:

  1. I C/C++->General->Additional Include Directories så har jag länkat till C:\Qt\6.7.3\msvc2022_64\include

  2. I Linker->General->Additional Library Directories så har jag länkat till C:\Qt\6.7.3\msvc2022_64\lib

  3. I Linker->Input->Additional Dependencies så har jag skrivit Qt6SerialPort.lib

  4. I C/C++->General->Language så har jag ställt in på C++17

  5. I C/C++->General->Command Line så har jag skrivit in /Zc:__cplusplus

När jag inkluderar

#include <QtSerialPort/qserialport.h>

Då får jag detta fel. Så vad kan vara felet? Vad måste jag åtgärda?

1>C:\Qt\6.7.3\msvc2022_64\include\QtCore\qobjectdefs_impl.h(534,23): error C2059: syntax error: '=' 1>(compiling source file 'Tools/Hardware/USB/USB.cpp') 1> C:\Qt\6.7.3\msvc2022_64\include\QtCore\qobjectdefs_impl.h(534,23): 1> the template instantiation context (the oldest one first) is 1> C:\Qt\6.7.3\msvc2022_64\include\QtCore\qobjectdefs_impl.h(530,11): 1> while compiling class template 'QtPrivate::QCallableObject' 1>C:\Qt\6.7.3\msvc2022_64\include\QtCore\qobjectdefs_impl.h(569,77): error C2760: syntax error: '{' was unexpected here; expected 'id-expression' 1>(compiling source file 'Tools/Hardware/USB/USB.cpp') 1>C:\Qt\6.7.3\msvc2022_64\include\QtCore\qobjectdefs_impl.h(569,88): error C2061: syntax error: identifier 'f' 1>(compiling source file 'Tools/Hardware/USB/USB.cpp') 1>C:\Qt\6.7.3\msvc2022_64\include\QtCore\qobjectdefs_impl.h(569,90): error C2143: syntax error: missing ';' before '}' 1>(compiling source file 'Tools/Hardware/USB/USB.cpp') 1>C:\Qt\6.7.3\msvc2022_64\include\QtCore\qobjectdefs_impl.h(569,83): error C2838: 'move': illegal qualified name in member declaration 1>(compiling source file 'Tools/Hardware/USB/USB.cpp') 1>C:\Qt\6.7.3\msvc2022_64\include\QtCore\qobjectdefs_impl.h(569,1): error C1903: unable to recover from previous error(s); stopping compilation 1>(compiling source file 'Tools/Hardware/USB/USB.cpp')

Permalänk
Medlem

Nu kan inte jag C++ men hur bygger du det och vad passar du till kompilator-toolchainen? Vad jag kan Googla mig till så verkar QT vilja bygga med CMake som plockar upp pkgconf-filen som potentiellt kan innehålla icke-triviala kompilator och länkarflaggor.

Utöver det så ser det ut som CMake drar in QTBase men jag är ganska grön gällande CMake.

Permalänk
Medlem

Svårt att veta utan mer context men en sak du kan kolla om det är för windows

har du lagt in #define NOMINMAX ? windows header filer har makron kallat för min och max och dessa kan ställa till det, ta bort dem
ser ut som något med signal/slot logiken i QT annars