C2039'XamlTypeInfo':不是XamlTypeInfo.g.cpp中'winrt :: Microsoft :: UI :: Xaml'的成员

问题描述 投票:0回答:1

我将Microsoft::UI::Xaml NuGet程序包添加到我的C ++ / WinRT空白应用程序项目将引发错误。

输出消息:

1> ------重建全部开始:项目:TxtRecordGenerator,配置:调试x64 ------ 1> 64位MIDLRT处理C:\ Users \ a124p \ Documents \ GitHub \ VisualizationRecorder \ TxtRecordGenerator \ App.idl1> App.idl 1> 64位MIDLRT处理C:\ Program Files(x86)\ Windows套件\ 10 \ Include \ 10.0.18362.0 \ winrt \ winrtbase.idl 1> winrtbase.idl 1> 64MIDLRT位处理C:\ Program Files(x86)\ Windows套件\ 10 \ Include \ 10.0.18362.0 \ winrt \ midlbase.idl 1> midlbase.idl1>处理WinMD1>处理输入元数据文件x64 \ Debug \ Unmerged \ App.winmd。1>处理输入元数据文件x64 \ Debug \ Unmerged \ MainPage.winmd。1>处理输入元数据文件x64 \ Debug \ Unmerged \ XamlMetaDataProvider.winmd。 1>保存的输出元数据文件TxtRecordGenerator.winmd。 1>验证元数据文件x64 \ Debug \ Merged \ TxtRecordGenerator.winmd。 1> pch.cpp 1> App.cpp1> MainPage.cpp 1> module.g.cpp 1> XamlTypeInfo.Impl.g.cpp1> XamlTypeInfo.g.cpp1> C:\ Users \ a124p \ Documents \ GitHub \ VisualizationRecorder \ TxtRecordGenerator \ GeneratedFiles \ XamlTypeInfo.g.cpp(919,77):错误C2039:“ XamlTypeInfo”:不是'winrt :: Microsoft :: UI :: Xaml'的成员1> C:\ Users \ a124p \ Documents \ GitHub \ VisualizationRecorder \ TxtRecordGenerator \ GeneratedFiles \ winrt \ Microsoft.UI.Xaml.Controls.h(16562):消息:请参阅'winrt :: Microsoft :: UI :: Xaml'的声明1> C:\ Users \ a124p \ Documents \ GitHub \ VisualizationRecorder \ TxtRecordGenerator \ GeneratedFiles \ XamlTypeInfo.g.cpp(919,65):错误C3083:“ XamlTypeInfo”:“ ::”左侧的符号必须是类型1> C:\ Users \ a124p \ Documents \ GitHub \ VisualizationRecorder \ TxtRecordGenerator \ GeneratedFiles \ XamlTypeInfo.g.cpp(919,79):错误C2039:'XamlControlsXamlMetaDataProvider':不是以下成员'winrt :: Microsoft :: UI :: Xaml'1> C:\ Users \ a124p \ Documents \ GitHub \ VisualizationRecorder \ TxtRecordGenerator \ GeneratedFiles \ winrt \ Microsoft.UI.Xaml.Controls.h(16562):消息:请参阅'winrt :: Microsoft :: UI :: Xaml'的声明1> C:\ Users \ a124p \ Documents \ GitHub \ VisualizationRecorder \ TxtRecordGenerator \ GeneratedFiles \ XamlTypeInfo.g.cpp(919,111):错误C3861:'XamlControlsXamlMetaDataProvider':找不到标识符1>完成建筑项目“ TxtRecordGenerator.vcxproj”-失败。===========全部重建:0成功,1失败,0跳过===========

这似乎是WinRT C ++代码生成器引起的错误。

C ++ / WinRT项目代码文件如下:

pch.h代码:

#pragma once
#include <windows.h>
#include <unknwn.h>
#include <restrictederrorinfo.h>
#include <hstring.h>
#include <winrt/Windows.Foundation.h>
#include <winrt/Windows.Foundation.Collections.h>
#include <winrt/Windows.ApplicationModel.Activation.h>
#include <winrt/Windows.UI.Xaml.h>
#include <winrt/Windows.UI.Xaml.Controls.h>
#include <winrt/Windows.UI.Xaml.Controls.Primitives.h>
#include <winrt/Windows.UI.Xaml.Data.h>
#include <winrt/Windows.UI.Xaml.Interop.h>
#include <winrt/Windows.UI.Xaml.Markup.h>
#include <winrt/Windows.UI.Xaml.Navigation.h>
#include <winrt/Microsoft.UI.Xaml.Controls.h>

MainPage.idl:

namespace TxtRecordGenerator
{
    [default_interface]
    runtimeclass MainPage : Windows.UI.Xaml.Controls.Page
    {
        MainPage();
    }
}

MainPage.h:

#pragma once

#include "MainPage.g.h"

namespace winrt::TxtRecordGenerator::implementation
{
    struct MainPage : MainPageT<MainPage>
    {
        MainPage();
    };
}

namespace winrt::TxtRecordGenerator::factory_implementation
{
    struct MainPage : MainPageT<MainPage, implementation::MainPage>
    {
    };
}

MainPage.cpp:

#include "pch.h"
#include "MainPage.h"
#include "MainPage.g.cpp"

using namespace winrt;
using namespace Windows::UI::Xaml;

namespace winrt::TxtRecordGenerator::implementation
{
    MainPage::MainPage()
    {
        InitializeComponent();
    }
}

MainPage.xaml:

<Page
    x:Class="TxtRecordGenerator.MainPage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="using:TxtRecordGenerator"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    xmlns:controls="using:Microsoft.UI.Xaml.Controls"
    mc:Ignorable="d">

    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition/>
            <RowDefinition/>
        </Grid.RowDefinitions>
        <Grid.ColumnDefinitions>
            <ColumnDefinition/>
            <ColumnDefinition/>
        </Grid.ColumnDefinitions>
        <CalendarDatePicker x:Name="BeginDatePicker" 
                            PlaceholderText="Pick a date" 
                            Header="Begin Date" 
                            Foreground="{ThemeResource SystemAccentColorLight1}" 
                            Grid.Row="0" 
                            Grid.Column="0" 
                            HorizontalAlignment="Center" 
                            VerticalAlignment="Center" />
        <CalendarDatePicker x:Name="EndDatePicker" 
                            PlaceholderText="Pick a date" 
                            Header="End Date" 
                            Foreground="{ThemeResource SystemAccentColorLight1}" 
                            Grid.Row="0" 
                            Grid.Column="1" 
                            HorizontalAlignment="Center" 
                            VerticalAlignment="Center" />
        <controls:NumberBox x:Name="BeginNumberBox"
                   Header="Enter an integer:" 
                   Value="1" 
                   SpinButtonPlacementMode="Compact" 
                   SmallChange="10"
                   LargeChange="100"
                   Grid.Row="1"
                   Grid.Column="0"
                   HorizontalAlignment="Center"
                   VerticalAlignment="Center"/>
        <controls:NumberBox x:Name="EndNumberBox"
                   Header="Enter an integer:" 
                   Value="1" 
                   SpinButtonPlacementMode="Compact" 
                   SmallChange="10"
                   LargeChange="100"
                   Grid.Row="1"
                   Grid.Column="1"
                   HorizontalAlignment="Center"
                   VerticalAlignment="Center"/>
    </Grid>
</Page>

开发环境:

  • IDE:Visual Studio 2019

    UWP项目目标版本:Windows 10,版本1903(10.0;构建18362)

    UWP项目的最低版本:Windows 10,版本1903(10.0;内部版本18362)

这个问题使我感到困惑。谁能帮我吗?

c++ uwp windows-10-universal c++-winrt
1个回答
0
投票

首先,您需要在App.xaml中声明WinUI应用程序资源:

<Application ......>
    <Application.Resources>
        <XamlControlsResources xmlns="using:Microsoft.UI.Xaml.Controls" />
    </Application.Resources>
</Application>

然后还要添加以下头文件。

#include "winrt/Microsoft.UI.Xaml.XamlTypeInfo.h"

关于更多详细信息,您可以参考本文档:A simple C++/WinRT Windows UI Library example

© www.soinside.com 2019 - 2024. All rights reserved.