4

我想从使用 Qt 5.9.2 for UWP 64bit (MSVC 2017) 创建的 UWP 应用程序中使用通过 WinRT API 可用的库(如这些)。我的机器上安装了 Visual Studio Build Tool 2017 v15.5.7。Windows 10 是我的操作系统。

现在,我已经设置了一个套件,如下所示。

UWP 套件设置

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

SOURCES += main.cpp

INCLUDEPATH += $$PWD/cppwinrt/10.0.16299.0/
DEPENDPATH += $$PWD/cppwinrt/10.0.16299.0/

cppwinrtGitHub 代表处获得。

我只是添加了一些行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();
}

运行qmakeand后build,我收到此错误:

C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\VC\Tools\MSVC\14.12.25827\include\optional(15): 致命错误 C1189: #error: class template optional 仅适用于 C+ +17。

Windows 文档清楚地指出,从 v15.3(我再一次,我有 15.5.7)开始,C++ 编译器接受了这个/std:c++17标志。我试图通过将这些行之一添加到.pro文件来传递它:

CONFIG += c++1z
# Or
QMAKE_CXXFLAG=/std:c++17

他们都没有帮助......

这是编译器运行的详细构建命令:

cl -c -nologo -FS -FS -Zc:rvalueCast -Zc:inline -Zc:strictStrings -Zc:throwingNew -Zc:referenceBinding -Zi -MDd -GR -W3 -w34100 -w34189 -w44996 -w44456 -w44457 -w44458 -wd4577 -wd4467 -EHsc /Fddebug\uwp-test.vc.pdb -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -DQ_BYTE_ORDER=Q_LITTLE_ENDIAN -DWINAPI_FAMILY=WINAPI_FAMILY_PC_APP -DWINAPI_PARTITION_PHONE_APP=1 -DX64 -D__X64__ -D__x64__ -DQT_DEPRECATED_WARNINGS -DQT_CORE_LIB -I..\uwp-test -I. -I..\ne-patient-app-libraries\cppwinrt\10.0.16299.0 -I..\..\..\..\Qt\5.9.2\winrt_x64_msvc2017\include -I..\..\..\..\Qt\5.9.2\winrt_x64_msvc2017\include\QtCore -Idebug -I..\..\..\..\Qt\5.9.2\winrt_x64_msvc2017\mkspecs\winrt-x64-msvc2017 -Fodebug\ @C:\Users\NEUROE~2\AppData\Local\Temp\main.obj.11672.15.jom

我错过了什么?什么可以解决问题?谢谢!

4

1 回答 1

7

你想要QMAKE_CXXFLAGS *= /std:c++17- 即_CXXFLAGS不是_CXXFLAG

*=如果它不存在,则意味着添加它。

于 2018-05-10T02:21:38.723 回答