【问题标题】:Need assistance with a DllNotFoundExeption需要有关 DllNotFoundExeption 的帮助
【发布时间】:2014-01-15 14:46:59
【问题描述】:

在我的项目中,我创建了一个 Plugins 文件夹(当然命名为“Plugins”),其中包含三个从我的 c++ 项目中导入的插件。每次我点击构建内容时,我的 dll 都会显示在“插件”文件夹中。

问题是我每次运行游戏时都会得到一个 DllNotFoundExeption,它指向我的三个插件中的两个。我和我的队友在网上发现可以通过将dll放在Assets文件夹中来解决这个问题。我们这样做了,幸运的是,它通过移动两个给我们错误的 dll 解决了它。我们在 Plugins 文件夹中留下了一个很好的 dll。

但有些东西在我的脑海里挥之不去,这并不能解决我们的整个问题,我是对的。当 w 构建游戏并创建我们的可执行文件时,只构建了一个 dll,这是 Plugins 文件夹中唯一的一个。

我的问题是:如何修复我的另外两个 dll,以免出现 DllNotFoundExeption 错误?

更新报告我发现一个可以工作的 dll 是用 C# 完成的,而另外两个在 Plugins 文件夹中似乎不能工作的 dll 是用 C++ 制作的。

所以我的新问题是如何让 Unity 接受 Plugins 文件夹中的这两个 dll,或者这对于 c++ 插件来说是不可能的?

【问题讨论】:

  • 您是否使用DllImport 属性来加载C++ dll?
  • 在 c++ 类中,是的,是的。
  • 我不熟悉 Unity。 C++ dll 是托管的还是非托管的?由于 Unity 支持 WP8 和 WStore,我认为它们应该被管理。
  • 我们让他们管理。

标签: c# dll unity3d


【解决方案1】:

请注意,通常 C++ 原生插件仅适用于 Unity Pro。除此之外,还有一些其他方法可以在没有专业许可证的情况下使其工作,如 here 所示。

【讨论】:

  • 幸运的是,我们拥有专业许可证。但是这个解决方法很棒。虽然它仍然没有解决我们遇到的问题。
  • 其实我收回了。这是我们问题的一种解决方案,因为他们的问题与我们的问题相似。我只是想知道我们需要做什么才能让统一接受插件文件夹中的 dll。这样我们就不必手动复制可执行文件所在的其他 dll。
  • @Manuel Mangual 我唯一可以建议的另一件事是编译一个包含您需要的库的程序集。这样,您就有了一个 DLL 和一个用于您尝试使用的库的包装器。