c# - 在 Win32 C# WPF 应用程序中使用 UWP C++ dll
问题描述
我正在尝试使用 Microsoft 在 Win32 C# WPF 应用程序中的一个 UWP 示例示例中使用的 SimpleCommunication C++ DLL。
我尝试添加对在将 SimpleCommunication .dll 构建到我的 Win32 C# WPF 应用程序时生成的 .dll 和 .winmd 文件的引用,但是每当我尝试从 SimpleCommunication 调用任何函数时,我都会收到以下异常消息:
引发异常:mscorlib.dll 中的“System.TypeLoadException”mscorlib.dll 中发生“System.TypeLoadException”类型的未处理异常找不到 Windows 运行时类型“Microsoft.Samples.SimpleCommunication.StspMediaSinkProxy”。
据我所知,这个 C++ dll 是作为 C++/CX 构建的(因为它在编译器中使用 /ZW 标志),因此它包含非托管代码,所以我假设我需要某种包装器能够从我的托管 wpf 应用程序中调用这些函数,但我不确定解决此问题的最佳方法是什么,任何帮助将不胜感激!
解决方案
尽管 WPF 应用程序可以使用系统提供的WinRT 类型(Windows
命名空间中的那些),但它们不能使用自定义 WinRT 类型,因为 Windows 不知道如何定位它们。解决方案是使用桌面桥将您的 WPF 应用程序添加到 AppX 包中,此时 Windows 将能够找到并激活您的类型。
(注意:您不必将应用提交到应用商店即可使用桌面桥;它只是一种打包应用的机制)。
推荐阅读
- python - 共享脚本不执行
- linux - 如何使用 telegraf procstat 插件获取进程名称和进程状态(运行或停止)
- julia - 如何评估定义和调用宏的 Julia 表达式?
- python - 需要为等待执行某些操作的函数添加上限
- php - 扩展 Spatie 角色模型但使用不同的数据库表
- r - 使用 if else 语句按组最后出现的特定值
- elasticsearch - 按计数聚合,然后从弹性搜索查询中获取中间桶
- php - 如何添加上传 PDF 文件的功能?
- python - 如何使用 PySpark 在 spark.read.csv 的路径中传递变量
- javascript - 保持数据重新加载Angular 8