Внутренняя ошибка WMC9999 Невозможно преобразовать типыC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Внутренняя ошибка WMC9999 Невозможно преобразовать типы

Сообщение Anonymous »

Я установил VS2022 V17.12 и вскоре после обновления до 17.13.2. Я установил пакет Nuget и все остальные вещи (я почти уверен).
Я создал новое приложение C ++/Winrt/UI3.0, используя все материалы мастера. Я построил решение без изменений, и все сработало просто отлично. < /P>
Далее я хотел создать пользовательский пользовательский элемент управления. Я отправился в Project> «Добавить новый элемент»> «Визуальный C ++»> «Пустое пользовательское управление» (c ++/winrt) и создал пустой пользовательский элемент управления.
Я осторожно коснулся полученных файлов и поместил в элементе в элементе . Я назвал это mynewbutton (

Код: Выделить всё

x:Name="MyNewButton"
).
Когда я построил свой проект (попробовал сборку, затем восстановил и, наконец, попробовал чистку, а затем построить), я получаю бесполезное сообщение об ошибке:

Код: Выделить всё

1>C:\Users\vermi\source\repos\CPP\SecondCppWinRTApp\SecondCppWinRTApp\BlankUserControl.cpp(11,47): warning C4100: 'value': unreferenced formal parameter
1>(compiling source file '/BlankUserControl.cpp')
1>C:\Users\vermi\source\repos\CPP\SecondCppWinRTApp\packages\Microsoft.WindowsAppSDK.1.6.250205002\build\Microsoft.UI.Xaml.Markup.Compiler.interop.targets(660,9): Xaml Internal Error error WMC9999: Unable to cast object of type 'System.Xaml.XamlType' to type 'Microsoft.UI.Xaml.Markup.Compiler.DirectUI.DirectUIXamlType'.
< /code>
Ни один из ботов AI не предлагает никаких полезных предложений, кроме как проверить мой синтаксис XAML. Все безрезультатно. Я не пытался использовать свой пользовательский элемент управления на моей главной странице, поэтому я не настраивал ни один из своих исходных файлов. Я пытался настроить и подтолкнуть кодовые файлы, но это всегда сводится к одному и тому же сообщению об ошибке в одном и том же месте. Моей первой попыткой было построить только настольное приложение из коробки. Это работает нормально, не очень интересно, но это работает. Возможно, мне глупо думать, что я могу использовать волшебников, чтобы получить структуру, чтобы повесить больше кода и ожидать, что он будет строить и работать без какого -либо вмешательства с моей стороны. Я имею в виду, когда я изучал C, используя K & R, я мог бы получить первое приложение «Hello, World» для работы как есть. Проект, над которым я работаю, был создан как пустое приложение, упакованное (Winui 3 в рабочем столе) 
. Я ничего не сделал с этими файлами. Я просто пытаюсь добавить пустой пользовательский элемент управления (C ++/winrt) в этот проект. Когда эти файлы включены, я получаю сообщение об ошибке WMC9999, показанное выше. Когда я исключаю их, проект строит и выполняется просто отлично.

Код: Выделить всё



Click Me Control


< /code>
blankusercontrol.cpp
#include "pch.h"
#include "BlankUserControl.h"
#if __has_include("BlankUserControl.g.cpp")
#include "BlankUserControl.g.cpp"
#endif

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

namespace winrt::SecondCppWinRTApp::implementation
{
int32_t BlankUserControl::MyProperty()
{
throw hresult_not_implemented();
}

void BlankUserControl::MyProperty(int32_t /* value */)
{
throw hresult_not_implemented();
}

void BlankUserControl::MyClickHandler(IInspectable const&, RoutedEventArgs const&)
{
MyButton().Content(box_value(L"Clicked"));
}
}
< /code>
blankusercontrol.h
#pragma once

#include "winrt/Windows.UI.Xaml.h"
#include "winrt/Windows.UI.Xaml.Markup.h"
#include "winrt/Windows.UI.Xaml.Interop.h"
#include "winrt/Windows.UI.Xaml.Controls.Primitives.h"
#include "BlankUserControl.g.h"

namespace winrt::SecondCppWinRTApp::implementation
{
struct BlankUserControl : BlankUserControlT
{
BlankUserControl()
{
// Xaml objects should not call InitializeComponent during construction.
// See https://github.com/microsoft/cppwinrt/tree/master/nuget#initializecomponent
}

int32_t MyProperty();
void MyProperty(int32_t value);

void MyClickHandler(Windows::Foundation::IInspectable const& sender, Windows::UI::Xaml::RoutedEventArgs const& args);
};
}

namespace winrt::SecondCppWinRTApp::factory_implementation
{
struct BlankUserControl : BlankUserControlT
{
};
}
< /code>
и, наконец,
blankusercontrol.idl
namespace SecondCppWinRTApp
{
[default_interface]
runtimeclass BlankUserControl : Windows.UI.Xaml.Controls.UserControl
{
BlankUserControl();
Int32 MyProperty;
}
}
Я переименовал метод и название элемента управления, чтобы избежать какого -либо конфликта с основным приложением Cowerplate.>

Подробнее здесь: https://stackoverflow.com/questions/794 ... vert-types
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»