DLL突然不加载C#UWP

问题描述:

我把本地C++中的dll构建为一个通用DLL在C#UWP应用程序的项目目录中,并设置内容复制总是找到它,然后第二天突然没有什么,不断得到:DLL突然不加载C#UWP

“无法加载DLL 'AVEngine.dll':指定的模块找不到(异常来自HRESULT:0x8007007E)。”

我与呼唤:

[DllImport(DLLName, CallingConvention = CallingConvention.Cdecl)] 
private static extern int OpenForProcessing(); 

我确保了架构和构建配置匹配,我也检查了SDK版本(最小/目标版本),我很难过。

使用Dependency Walker检查您的AVEngine.dll的依赖关系。可能其中一些丢失,并且因为它不能被加载。

更好的将旧功能展现给现代C#UWP应用程序的方法是使用WinRT组件包装AVEngine.dll逻辑。然后你可以在UWP应用程序中引用这个组件。文章"Use Existing C++ Code in a Universal Windows Platform App"可能会有所帮助。

+0

嗨Nikita,感谢您的建议,但现在即使使用C++ WinRT组件,我也会得到相同的FileNotFoundException。真的很痛苦,我使用的所有dll都在项目文件夹中,添加到解决方案中,设置为内容并始终复制。有什么建议么?谢谢 – Sixjac

+0

@SeanRyan运行[进程监视器](https://technet.microsoft.com/en-us/sysinternals/processmonitor.aspx)查看您的应用程序尝试加载哪些文件。你应该看看哪些dll阻止你加载'AVEngine.dll'。 – Nikita

+0

谢谢我安装并运行,但是我看不到任何清楚显示问题的东西,它很难阅读,也许我应该学习如何使用它。谢谢 – Sixjac