Stati c Библиотека C ++ / WinRT - PullRequest
0 голосов
/ 29 марта 2020

Я создал библиотеку stati c (c ++ / WinRT) и универсальное приложение Windows [Blank App] (c ++ / WinRT) в VS 2019.

Затем из Project Universal Window Window Я добавил ссылку на проект библиотеки stati c.

Ошибка при создании универсального приложения

D:\Dv\Main\Vib\CM\UI\UserInterfaceCppWinRT\Generated Files\XamlTypeInfo.g.cpp(178,52): error C2039: 'UIViewModelCppWinRT': is not a member of 'winrt'

По отдельности, сборка библиотеки stati c по отдельности прошла успешно. Понятия не имею о потреблении проекта библиотеки c ++ / winrt stati c. Любое предложение?

1 Ответ

1 голос
/ 31 марта 2020

Когда вы добавляете ссылку на библиотеку stati c в основной проект и успешно строите главный проект, вы можете обнаружить, что она создала файл StaticLibrary.h в папке \ MyProject \ MyProject \ Сгенерированные файлы \ winrt , а также другие пространства имен Windows. Поэтому, если вы хотите импортировать idl (например, Class.idl), вам не нужно импортировать его вручную, поскольку ваша цепочка инструментов настроена на автоматическую ссылку на любые типы, которые находятся в системных пространствах имен. Вам нужно только импортировать любые типы, которые вы определили в своем проекте. Например:

MainPage.idl

namespace WinrtApp
{
    [default_interface]
    runtimeclass MainPage : Windows.UI.Xaml.Controls.Page
    {
        MainPage();
        Int32 MyProperty;
        StaticLibrary1.Class MyClass;
    }
}

Если вы хотите получить доступ к свойству из библиотеки stati c, сначала включите файл заголовка и инициализируйте его.

MainPage.h

private:
        StaticLibrary1::Class myclass{nullptr};

. cpp:

#include "winrt/StaticLibrary1.h"

myclass = StaticLibrary1::Class();
int property = myclass.MyProperty();

Здесь - это простой пример, который я создал, вы можете скачать его, чтобы проверить все шаги .

...