.dll、.winmd 可以在 Unity 中读取,但不能在 XAML 项目中读取

Posted

技术标签:

【中文标题】.dll、.winmd 可以在 Unity 中读取,但不能在 XAML 项目中读取【英文标题】:.dll, .winmd can be read in Unity but not in XAML project 【发布时间】:2021-06-24 05:58:32 【问题描述】:

我有一个来自 this solution 的 c++ .dll.winmd。当我将它们放在 Unity 的 Plugin 文件夹中,构建 Universal Windows 项目并部署到 Hololens 2 时,.dll.winmd 中的类被识别。

如果我创建一个 Visual Studio Universal Windows XAML 项目,请将 .dll.winmd 复制到项目路径并通过 Reference-Add 包含 .winmd,所有类在编辑期间都在那里(在编辑和建设)。当我构建解决方案时,.dll 也被复制到构建路径。但是,如果我部署并运行代码,项目会抛出以下异常:

 'ResearchMode.exe' (Win32): Unloaded U:\Users\DefaultAccount\AppData\Local\DevelopmentFiles\78ac9912-63f6-43a8-b469-6e4684f8ea08VS.Release_ARM.cwule\HoloLensForCV.dll
onecore\com\combase\objact\dllcache.cxx(2132)\combase.dll!7728B3FD: (caller: 771AC799) ReturnHr(1) tid(178) 8007007E The specified module could not be found.
onecore\com\combase\objact\dllcache.cxx(4634)\combase.dll!771AC7B3: (caller: 771AB0A9) ReturnHr(2) tid(178) 8007007E The specified module could not be found.
onecore\com\combase\objact\dllcache.cxx(4766)\combase.dll!771AC7CB: (caller: 771AB0A9) ReturnHr(3) tid(178) 8007007E The specified module could not be found.
Exception thrown: 'System.IO.FileNotFoundException' in System.Private.Interop.dll
The specified module could not be found. (Exception from HRESULT: 0x8007007E)

我是否错误地包括了.winmd.dll?为什么它们为 Unity 项目正确加载但不为 XAML 项目加载的原因可能是什么?我还需要为这些程序集指定 Unity 可能已经为我做的我不知道的其他任何事情吗?

【问题讨论】:

【参考方案1】:

知道了。上面的项目提供了一个HoloLensForCV.winmd 和一个HoloLensForCV.dll 和一个opencv_world3411.dll。除了通过 Reference-Add 添加HoloLensForCV.winmd(将HoloLensForCV.dll 复制到输出目录),我还需要通过Add-Existing 项手动将opencv_world3411.dll 添加到解决方案中(选择“始终复制”)。

【讨论】:

以上是关于.dll、.winmd 可以在 Unity 中读取,但不能在 XAML 项目中读取的主要内容,如果未能解决你的问题,请参考以下文章

unity添加Mysql的dll以及发布的问题

Unity使用MiniExcel读取Excel文件中的数据

unity 读取外部exe程序控制台信息

Unity3D中Excel表的读取与写入

Unity3D读取之——读取Excel文件内容

Unity3D读取之——读取Excel文件内容