Ben*_*n H 5 dll windows-8 windows-runtime c++-cx
我的基于 Win32 的桌面应用程序中有一个 WinRT 类(C++/CX 引用类)。它访问 WinRT API 并且工作得很好。我使用本指南来让它工作。现在我试图将此类放入桌面应用程序可以使用的库中。我在这方面遇到了一些麻烦。这是我在 Visual Studio 2013 中所做的:
#using <MyLib.winmd>
#using <Windows.winmd>
#using <Platform.winmd>
[MTAThread] // initializes WinRT runtime
int APIENTRY _tWinMain(_In_ HINSTANCE hInstance,
_In_opt_ HINSTANCE hPrevInstance,
_In_ LPTSTR lpCmdLine,
_In_ int nCmdShow) {
MyWinRTClass^ myObject = ref new MyWinRTClass();
}
Run Code Online (Sandbox Code Playgroud)
智能感知可以工作,我编写了代码来实例化库中的类。桌面应用程序已构建,但当它运行时我得到:
MyDesktopApp.exe 中 0x76494598 处的首次机会异常:Microsoft C++ 异常:Platform::ClassNotRegisteredException ^ 位于内存位置 0x00A8F99C。
这是怎么回事?这是正确的方法吗?
截至 2019 年 7 月 26 日更新:请参阅以下帖子中“Adam Braden - MSFT”的评论。
这不可能。为了让应用程序使用自定义 WinRT 组件,需要首先“注册”该组件。对于打包 (AppX) 应用程序,这是通过将一些信息添加到包的 AppXManifest.xml 中来完成的。但是,对于常规 Win32 桌面应用程序,现在可以进行此类注册。您可以直接调用操作系统提供的 WinRT API,但无法写入自己的自定义 WinRT API 以供其他应用程序使用。
归档时间: |
|
查看次数: |
2472 次 |
最近记录: |