首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于动态链接库的免注册WinRT组件

用于动态链接库的免注册WinRT组件
EN

Stack Overflow用户
提问于 2020-10-25 15:35:44
回答 1查看 161关注 0票数 0

我正在尝试使用免注册的WinRT,方法是将https://blogs.windows.com/windowsdeveloper/2019/04/30/enhancing-non-packaged-desktop-apps-using-windows-runtime-components/后面的应用程序清单添加到我的DLL中,该DLL用作进程内COM服务器。

但是,在实例化运行时类时,我会得到REGDB_E_CLASSNOTREG。我使用mt.exe来确保清单是嵌入的。我在Win-10 2004。这是否应该适用于win32 in-proc DLL服务器?是否有API调用来手动注册组件?

EN

回答 1

Stack Overflow用户

发布于 2020-10-26 12:25:19

看起来,https://stackoverflow.com/a/48308884中的加载器并没有将Dll激活上下文用作活动激活上下文。

相反,我们必须保存上下文并在实例化我们的运行时类之前激活它,如下所示:

在DllMain中:

代码语言:javascript
复制
if (dwReason == DLL_PROCESS_ATTACH)
{
    GetCurrentActCtx(&hActCtx);
}

在实例化Runtime类之前:

代码语言:javascript
复制
ActivateActCtx(hActCtx, &cookie);
Class1 c;
DeactivateActCtx(0, cookie);
auto x = c.MyProperty();

通过手动使用激活上下文API以及DLL中嵌入的清单,我无需注册即可使用winrt组件。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64521400

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档