DLLNotFoundException - Unity3D 插件

DLLNotFoundException - Unity3D Plugin

我在某些 windows 机器上的独立构建中遇到 DLLNotFoundException,其他机器运行良好。 dll文件肯定是在plugins文件夹里,也复制到projectName_Data文件夹下,没区别。

还尝试将 dll 添加到流式资产文件夹并设置新路径 (Environment.SetEnvironmentVariable),但也没有用。

顺便说一句,使用 Unity 4.5.5

如有任何帮助,我们将不胜感激!!!

我发现问题是玩家需要安装 Visual C++ redistributable,可以在这里下载: https://www.microsoft.com/en-gb/download/details.aspx?id=40784

我发现错误 DllNotFoundException 在某些情况下非常具有误导性。这不应归咎于 Unity,因为当 dll 加载出现问题时,Unity 只是在内存中没有该 dll 并告诉你。

正如 Keysosaurus 所说,必须安装 Visual C++ Redistributable 才能使您的独立版本正常工作,在大多数情况下这可以解决问题,但也可能有其他原因,例如第三方依赖项。

如果您使用的是第三方库,那么您还必须将所有需要的 DLL 或 SO 复制到您的可执行文件的文件夹中。

例如,我正在使用 OpenNI 2,当我构建时,我立即将所有文件从 C:\Program Files (x86)\OpenNI2\Redist 文件夹复制到该文件夹包含.exe。不这样做会导致 DllNotFoundException.

另外不要忘记 DLL(和 SO)必须与您的目标架构相匹配,因此如果您的目标是 x64(64 位),那么您的 DLL 也必须是 x64,如果您尝试使用 x86(32位)DLL Unity 将被混淆并且不会加载给你同样的错误。

请记住,Unity 5 有 32 位和 64 位版本。为了 运行 您的游戏在 Unity 编辑器中,所有第三方库必须存在于 x86 和 x64 中(在 Unity 的常规文件夹中)或至少与您的 Unity 编辑器架构相匹配的库。