C++ 使用MinGW构建Qt项目以使用winrtapi

C++ 使用MinGW构建Qt项目以使用winrtapi,c++,qt,mingw,c++-winrt,C++,Qt,Mingw,C++ Winrt,我想使用通过WinRT API(like)从使用Qt5.9.2 MinGW 32位创建的应用程序中获得的库。我有Windows10操作系统 现在,我已经设置了一个工具包,如下所示 然后,在.pro文件中,我添加了: CONFIG += c++1z SOURCES += main.cpp ### Windows 10 SDK win32:CONFIG(release, debug|release): LIBS += -L$$PWD/'../../../../Program Files

我想使用通过WinRT API(like)从使用Qt5.9.2 MinGW 32位创建的应用程序中获得的库。我有Windows10操作系统

现在,我已经设置了一个工具包,如下所示

然后,在
.pro
文件中,我添加了:

CONFIG += c++1z

SOURCES += main.cpp

 ### Windows 10 SDK

 win32:CONFIG(release, debug|release): LIBS += -L$$PWD/'../../../../Program Files (x86)/Windows Kits/10/Lib/10.0.16299.0/um/x86/' -lWindowsApp
 else:win32:CONFIG(debug, debug|release): LIBS += -L$$PWD/'../../../../Program Files (x86)/Windows Kits/10/Lib/10.0.16299.0/um/x86/' -lWindowsApp

 INCLUDEPATH += $$PWD/'../../../../Program Files (x86)/Windows Kits/10/Include/10.0.16299.0/shared'
 DEPENDPATH += $$PWD/'../../../../Program Files (x86)/Windows Kits/10/Include/10.0.16299.0/shared'
 INCLUDEPATH += $$PWD/'../../../../Program Files (x86)/Windows Kits/10/Include/10.0.16299.0/um'
 DEPENDPATH += $$PWD/'../../../../Program Files (x86)/Windows Kits/10/Include/10.0.16299.0/um'
 INCLUDEPATH += $$PWD/'../../../../Program Files (x86)/Windows Kits/10/Include/10.0.16299.0/ucrt'
 DEPENDPATH += $$PWD/'../../../../Program Files (x86)/Windows Kits/10/Include/10.0.16299.0/ucrt'
 INCLUDEPATH += $$PWD/'../../../../Program Files (x86)/Microsoft Visual Studio/2017/BuildTools/VC/Tools/MSVC/14.12.25827/include'
 DEPENDPATH += $$PWD/'../../../../Program Files (x86)/Microsoft Visual Studio/2017/BuildTools/VC/Tools/MSVC/14.12.25827/include'
 INCLUDEPATH += $$PWD/../ne-patient-app-libraries/cppwinrt/10.0.16299.0/
 DEPENDPATH += $$PWD/../ne-patient-app-libraries/cppwinrt/10.0.16299.0/
我从中获得了
cppwinrt
,从中获得了Windows10SDK

我刚刚在
main.cpp
中添加了一些行来测试正确的编译:

#include <QCoreApplication>
#include <winrt/Windows.Devices.WiFi.h>

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

    WiFiAdapter wiFiAdapter;

    return a.exec();
}

我错过了什么?什么能解决这个问题?谢谢大家!

我甚至不确定这是否可能。你可能必须使用msvc。据我所知,官方只支持msvc,而Clang作为辅助编译器来确保标准的一致性。如果您不能使用MSVC,您最好的选择是切换到Clang。如果您需要gnu功能,您可能需要使用
-std=c++17
-std=gnu++17
。C++/WinRT需要C++17。VisualStudio还使用了
/await
选项,该选项为协同程序启用了一些实验性和技术性的规范编译器功能,我不确定是否也需要这样做。看见
g++ -c -fno-keep-inline-dllexport -g -std=gnu++1z -Wextra -Wall -W -fexceptions -mthreads -DUNICODE -D_UNICODE -DQT_DEPRECATED_WARNINGS -DQT_QML_DEBUG -DQT_CORE_LIB -I../uwp-test -I. -I"../../../../Program Files (x86)/Windows Kits/10/Include/10.0.16299.0/shared" -I"../../../../Program Files (x86)/Windows Kits/10/Include/10.0.16299.0/um" -I"../../../../Program Files (x86)/Windows Kits/10/Include/10.0.16299.0/ucrt" -I"../../../../Program Files (x86)/Microsoft Visual Studio/2017/BuildTools/VC/Tools/MSVC/14.12.25827/include" -I../ne-patient-app-libraries/cppwinrt/10.0.16299.0 -I../../../../Qt/5.9.2/mingw53_32/include -I../../../../Qt/5.9.2/mingw53_32/include/QtCore -Idebug -I../../../../Qt/5.9.2/mingw53_32/mkspecs/win32-g++  -o debug/main.o ../uwp-test/main.cpp