如果使用 Visual Studio 编写 Windows 运行时 C++ 模板库 (WRL) 项目,可以通过下载 WRL 类库项目模板极大地简化任务。
备注
如果必须手动更新现有的项目设置,请参见 DLL (C++/CX)。
下载“VSIX 项目”模板。
Visual Studio 为 WRL 项目不提供一个模板。 如何下载这是创建 Windows 应用商店 应用的基本类库与 WRL的项目模板。
下载“VSIX 项目”模板。
在菜单栏上,选择**“文件”,再选择“新建项目”**。
在对话框的左窗格中,展开**“配置属性”,然后选择“常规”,选择模版**。
在 搜索联机模板 右上角框中,键入 WRL 类库。 当模板出现在搜索结果中,选择 确定 按钮。
在对话框中,下载并安装,如果您同意许可时间限制,请选择 安装 按钮。
在模板上安装后,请通过选择 文件新建项目,然后选择 WRLClassLibrary,创建项目模板。 创建DLL项目
使用项目模板示例
将使用此模板创建 Windows 运行时 组件的示例。演练:使用 WRL 创建基本 Windows 运行时组件
项目模板提供。
测试项目模板
声明 MIDL 的 .idl 文件提供基本界面特性其类实现。 以下是一个示例。
import "inspectable.idl"; import "Windows.Foundation.idl"; #define COMPONENT_VERSION 1.0 namespace WRLClassLibrary { interface IWinRTClass; runtimeclass WinRTClass; [uuid(89656677-8679-477c-aff1-f724c64b70f3), version(COMPONENT_VERSION), exclusiveto(WinRTClass)] interface IWinRTClass : IInspectable { } [version(COMPONENT_VERSION), activatable(COMPONENT_VERSION)] runtimeclass WinRTClass { [default] interface IWinRTClass; } }
定义了类实现的 .cpp 文件。 以下是一个示例。
#include "pch.h" #include "WRLClassLibrary_h.h" #include <wrl.h> using namespace Microsoft::WRL; using namespace Windows::Foundation; namespace ABI { namespace WRLClassLibrary { class WinRTClass: public RuntimeClass<IWinRTClass> { InspectableClass(L"WRLClassLibrary.WinRTClass", BaseTrust) public: WinRTClass() { } }; ActivatableClass(WinRTClass); } }
RuntimeClass 基类来帮助管理所有全局对象引用模块中以及 IUnknown 声明和 IInspectable 接口的方法。 InspectableClass 宏实现 IUnknown 和 IInspectable。 ActivatableClass 宏创建类实例的类工厂。
文件中定义库导出了 DllMain、DllCanUnloadNow、DllGetActivationFactory和 DllGetClassObject的 module.cpp。