为什么 Unity 不能识别这个 DLL - 它是在错误的地方吗?
Why won't Unity recognize this DLL - is it in the wrong place?
我继承了一个几乎没有文档的项目。基本上它是一个 Unity 项目,从 运行ning Linux 程序接收模拟心率信息,以显示。
我在平板电脑上获得了 Unity 应用程序 运行ning 的工作版本。但是当我从存储库中打开项目并尝试 运行 它时,我得到一个 DllNotFoundException。我仍在尝试弄清楚整个项目是如何设置的,但据我了解,编写 DLL 是为了将 C++ 转换为 C# 以便与 Unity 一起使用,因此源文件夹包含一个 C# 接口 class,以及 .cpp 和 .h 文件。
此 DLL 是项目中的几个 DLL 之一,但它是唯一一个抛出错误的 DLL。起初我认为这可能是一个错误的 DLL,所以我按照必须生成新的一些说明进行操作,但那些生成的 dll 也不起作用。之前的 Dev 使用 CMake 为工作版本创建 dll。我已经尝试使用 cMake 和 Visual Studio 来生成 dll,但仍然出现相同的异常。
然后我认为它可能与用于生成C# 界面的.net Framework 版本有关,但是之前的开发人员包含的调试调用显示加载了c# 界面(称为Iface)。我还使用 .Net Framework 3.5 通过 visual studio(社区 2019)重新生成了 dll,但我仍然得到相同的结果:DLLNotFoundException
我还尝试更改 Unity 构建设置以针对之前开发人员所说的不同平台,PC、Android 和通用 Windows。无论针对哪个平台,我都会得到相同的 DLLNotFoundException。
我不确定这是否相关,但我发现如果我在 Unity 中的“插件加载设置”下选中“启动时加载”,我会收到错误“插件加载失败......因为无法加载它的一个或多个依赖项。”我一直在试图弄清楚哪些依赖项没有被加载。
我在之前开发人员指示的文件夹中有插件,在 Assets>HeartRateEngine>Plugins 中,然后那个插件文件夹有 Native 和 Managed 文件夹,抛出异常的是在 Native 文件夹中。我认为 DLL 的位置可能是问题的一部分?
我将尝试重新克隆整个项目,并再次重新生成所有 dll,但我希望得到任何帮助。如有必要,我可以使用代码进行更新,但我目前认为代码不是问题,因为以前的开发人员能够让它工作,而且我可以访问历史记录。如果我有任何进展,我会尽快更新。如果这是一个写得不好的问题,我深表歉意,我只是感到绝望。非常感谢您阅读所有这些内容! :)
啊啊啊终于解决问题了!我的 DLL 需要的依赖项不存在。出于某种原因,Unity 没有给出依赖错误或类似的错误,而是报告 DllNotFoundException: <dllName.dll>
.
我找到了一个 GitHub thread suggesting a tool called Dependency Walker 来检查依赖关系,但那给了我一长串东西。
我试着四处寻找 Dependency Walker 报告的内容并找到 that suggested an updated (i.e., post-Win7) tool called Dependecies。
当指向 Unity“找不到”的 DLL 时,该工具显示了另一个不在我的新计算机上的常见 DLL(对于我的公司)。试图在源计算机上找到 DLL 并意识到它与公司软件一起安装,DLL 旨在与...那里的大脸掌接口。安装了软件,Dependencies 找到了我的 Unity 所依赖的 DLL,然后 Unity“找到”了 DLL 并且运行没有问题。
我继承了一个几乎没有文档的项目。基本上它是一个 Unity 项目,从 运行ning Linux 程序接收模拟心率信息,以显示。
我在平板电脑上获得了 Unity 应用程序 运行ning 的工作版本。但是当我从存储库中打开项目并尝试 运行 它时,我得到一个 DllNotFoundException。我仍在尝试弄清楚整个项目是如何设置的,但据我了解,编写 DLL 是为了将 C++ 转换为 C# 以便与 Unity 一起使用,因此源文件夹包含一个 C# 接口 class,以及 .cpp 和 .h 文件。
此 DLL 是项目中的几个 DLL 之一,但它是唯一一个抛出错误的 DLL。起初我认为这可能是一个错误的 DLL,所以我按照必须生成新的一些说明进行操作,但那些生成的 dll 也不起作用。之前的 Dev 使用 CMake 为工作版本创建 dll。我已经尝试使用 cMake 和 Visual Studio 来生成 dll,但仍然出现相同的异常。
然后我认为它可能与用于生成C# 界面的.net Framework 版本有关,但是之前的开发人员包含的调试调用显示加载了c# 界面(称为Iface)。我还使用 .Net Framework 3.5 通过 visual studio(社区 2019)重新生成了 dll,但我仍然得到相同的结果:DLLNotFoundException
我还尝试更改 Unity 构建设置以针对之前开发人员所说的不同平台,PC、Android 和通用 Windows。无论针对哪个平台,我都会得到相同的 DLLNotFoundException。
我不确定这是否相关,但我发现如果我在 Unity 中的“插件加载设置”下选中“启动时加载”,我会收到错误“插件加载失败......因为无法加载它的一个或多个依赖项。”我一直在试图弄清楚哪些依赖项没有被加载。
我在之前开发人员指示的文件夹中有插件,在 Assets>HeartRateEngine>Plugins 中,然后那个插件文件夹有 Native 和 Managed 文件夹,抛出异常的是在 Native 文件夹中。我认为 DLL 的位置可能是问题的一部分?
我将尝试重新克隆整个项目,并再次重新生成所有 dll,但我希望得到任何帮助。如有必要,我可以使用代码进行更新,但我目前认为代码不是问题,因为以前的开发人员能够让它工作,而且我可以访问历史记录。如果我有任何进展,我会尽快更新。如果这是一个写得不好的问题,我深表歉意,我只是感到绝望。非常感谢您阅读所有这些内容! :)
啊啊啊终于解决问题了!我的 DLL 需要的依赖项不存在。出于某种原因,Unity 没有给出依赖错误或类似的错误,而是报告 DllNotFoundException: <dllName.dll>
.
我找到了一个 GitHub thread suggesting a tool called Dependency Walker 来检查依赖关系,但那给了我一长串东西。
我试着四处寻找 Dependency Walker 报告的内容并找到
当指向 Unity“找不到”的 DLL 时,该工具显示了另一个不在我的新计算机上的常见 DLL(对于我的公司)。试图在源计算机上找到 DLL 并意识到它与公司软件一起安装,DLL 旨在与...那里的大脸掌接口。安装了软件,Dependencies 找到了我的 Unity 所依赖的 DLL,然后 Unity“找到”了 DLL 并且运行没有问题。