静态库 C++/WinRT

Static Library C++/WinRT

我在 VS 2019 中创建了一个静态库 (c++/WinRT) 和一个通用 Windows 应用 [空白应用] (c++/WinRT) 项目。

然后从 Project Universal Window app 我添加了静态库的项目引用。

我在构建通用应用程序时遇到以下错误

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

单独静态库构建成功。没有获得有关 c++/winrt 静态库项目使用的任何线索。有什么建议吗?

当你将静态库的引用添加到主工程中并成功构建主工程时,可以发现在[=26]下生成了StaticLibrary.h文件=]\MyProject\MyProject\Generated Files\winrt 文件夹以及其他 Windows 命名空间。所以如果你想导入 idl(例如 Class.idl),你不需要手动导入它,因为你的工具链被设置为自动引用系统命名空间中的任何类型。您只需导入您在项目中定义的任何类型。例如:

MainPage.idl

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

当你想从静态库访问属性时,首先包含头文件并初始化它。

MainPage.h

private:
        StaticLibrary1::Class myclass{nullptr};

.cpp:

#include "winrt/StaticLibrary1.h"

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

Here是我制作的一个简单示例,你可以下载它查看完整的步骤。