我找到了一种方法,通过绕过默认的激活工厂分辨率,在桌面上(不带应用程序容器)利用cpp winrt进行C#/ C ++互操作。
我这样做的方法是,将本机C ++函数公开为工厂,并返回在C#中IP / Invoke的IUnknown指针,然后调用Marshal.GetUniqueObjectForIUnknown(ptr)以获取可转换为WinRT接口的RCW。 / p>
我现在遇到的问题是,我的C ++库链接到vcruntime140_app.dll而不是vcruntime140.dll,这实际上使该文件无法重新分发。 有没有办法使cppwinrt库链接到桌面C运行时? (我使用Visual Studio 2019预览模板)
答案 0 :(得分:0)
我发现将AppContainerApplication
属性设置为false似乎可行。
我肯定会在github上放一些东西来解释我的解决方案。