【问题标题】:Does current 64-bit Unity 2020 still support 32-bit (x86) native DLLs? [duplicate]当前的 64 位 Unity 2020 是否仍支持 32 位 (x86) 本机 DLL? [复制]
【发布时间】:2021-06-22 06:47:49
【问题描述】:

当前的 64 位 Unity 是否仍支持 32 位 (x86) 本机 DLL?

我有一个大型 x86 DLL 和一个不错的 C API,以及一个在 C# 中完美运行的互操作文件,但在 Unity 中除外。我已将所有能找到的选项都设置为 x86,并尝试将其放入 Plugins/x86。

要么它没有找到 DLL,要么它找到它并抱怨我需要将它转换为 64 位。但我做不到。

要么 (a) 某处是我遗漏的关键因素,要么 (b) 它无法完成并且我的项目已死。它是哪一个?一些示例代码或教程会有所帮助。我没有想法。


我的问题的关键是,这只是关于 Unity,而不是关于 x64 与 x86 的一般问题。其他问题无关紧要。

答案是:不,您不能在 Unity 编辑器中使用 32 位 DLL,但是可以,您可以在带有 x86 目标的 Unity 构建中使用 32 位 DLL。 Unity 允许您提供多个 DLL 以针对不同的平台,但对于编辑器,它必须是 64 位的。

我认为这是一个合理的问题和有用的答案,我在其他地方没有看到过。我认为它不应该关闭。

【问题讨论】:

  • 这些其他答案是无关紧要的,因为它们没有提到 Unity。
  • “64 位 Unity”是否不意味着 64 位 DLL,因此不意味着 64 位进程?无论哪种方式,重复项都清楚地表明只有 32 位进程可以直接使用 32 位 DLL,其他所有内容都从该 DLL 遵循,包括您需要 Unity 库的 32 位构建才能在同一进程中使用它作为另一个 32 位 DLL。
  • 我想可以公平地说明 DLL 与编辑器的可用位数,这是限制一个人的选择的另一个必要事实。不过,它不是开源的吗?因此,人们可能会期望您可以构建一个 32 位的编辑器。

标签: unity3d x86 interop


【解决方案1】:

64 位可执行文件无法调用 32 位 dll,反之亦然。因此,您不能将 32 位插件用于统一编辑器,因为该编辑器仅可作为 64 位平台使用。

【讨论】:

  • 这个答案可能会有所帮助,因为它表明问题特定于 64 位 Unity 编辑器,而不是 Unity 平台本身。这是故意的吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-22
  • 2021-05-28
  • 2020-03-08
  • 2010-10-10
  • 1970-01-01
  • 2012-04-03
相关资源
最近更新 更多