xuw*_*wer 20 mono dynamic-linking unity3d
使用 Unity3D for Linux 制作的游戏.dll
在其数据文件夹中包含文件GameDataFolder/Managed
。
这很奇怪,因为我认为 Linux 使用.so
文件而不是.dll
文件。
(Android-Unity3D 应用程序也是如此。)
为什么?
Gol*_*oth 25
您所说的游戏基于 .NET Framework 并使用 Mono 运行,Mono 是 Microsoft .NET Framework 的免费开源实现。
由于这些应用程序基于 .NET,因此程序集具有 .dll 扩展名。所以你可以在文件夹中看到 DLL 文件。
一个为跨平台使用而设计的 .NET 程序可以在 Windows、Linux 或 Mac 上运行,具有相同的“二进制文件”(包括也是程序集的 DLL),它们在 MSIL 中编译,需要 .NET/Mono 运行时才能执行.
请注意,您还有一些基于 Ubuntu 存储库中可用的 Mono 框架的免费应用程序(不仅仅是游戏)。例如:假小子。
中的.dll
文件GameDataFolder/Managed
属于在内部使用 Mono 的本机代码程序。
可以由 .NET 公共语言运行时或 Mono 运行的跨平台可执行文件和共享库通常分别以.exe
和.dll
后缀命名,即使它们不是特定于 Windows 的。当您.dll
在 GNU/Linux 系统(如 Ubuntu)或除 Windows 之外的任何操作系统的程序中找到文件时,通常就是这个原因。大多数情况下,您会.dll
在 Ubuntu 系统中找到 a ,Golboth 的回答对此进行了解释。但这并不是这里发生的事情。
在统一的游戏引擎-它不应该与混淆在大多数Ubuntu的发行版默认的图形界面--is流行的自主研发的跨平台游戏引擎。此引擎不在.NET Framework 或 Mono 之上运行。相反,它嵌入了 Mono,也就是说 Mono 在它之上运行。这就是开发人员编写他们的游戏需要的任何代码的方式,这些代码尚未包含在 Unity 引擎中。
通常,Mono 的使用方式与 Microsoft 的 .NET CLR 通常使用的方式相同,以运行完整的 .NET/Mono 程序。但 Mono 还被设计为可轻松嵌入本机代码应用程序中,包括使这些应用程序能够进行自定义。这就是你所描述的情况。您看到的文件不属于直接在 Mono 或 .NET CLR 之上运行的程序。相反,它们属于嵌入 Mono 的本机代码程序。
Unity 游戏引擎主要用 C++ 编写,托管自己的 Mono 实例,该实例不使用 - 并且可能与 - 通过系统的包管理器安装的版本(如果有)不同。这个嵌入式 Mono 运行时不能用于运行独立的 .NET/Mono 程序,因为这不是它的目的。相反,引擎的本机代码部分使用它来运行 CIL 代码。(CIL 是Common Intermediate Language,这是它的正式名称。它以前被称为 MSIL 或 Microsoft Intermediate Language,因为它是微软最初开发的。)使用 Unity 引擎制作游戏的程序员通常用 C# 编写自己的代码,尽管一些其他语言支持。
Unity 引擎甚至在 Windows 中也嵌入了 Mono。对于通用 Windows 平台游戏——而不是其他平台——它使用 Microsoft .NET Framework 而不是 Mono。但是大多数平台上的大多数 Unity 游戏,包括大多数移动设备和游戏机,包括 Ubuntu 和 Windows,都使用 Mono。在某些平台上,IL2CPP可作为 Mono 的替代品,而在少数平台上,仅支持 IL2CPP。有关详细信息,请参阅脚本限制。
.dll
在 Ubuntu 上看到文件的其他情况.dll
已经描述了您可能在 Ubuntu 上看到文件的两种情况:
.dll
您在 Ubuntu 系统上看到的大多数s。它恰好不是.dll
您GameDataFolder/Managed
文件夹中的文件的用途。还有另外两种相当常见的情况,您可能会.dll
在 Ubuntu 上看到文件:
.dll
文件而不是.exe
文件,即使您正在编译的不是库。.NET Core 运行时(称为 CoreCLR)运行这些文件,而不是常规的 .NET Framework 或 Mono。.NET Core 是微软的产品,但与标准的 .NET Framework 不同,.NET Core 是跨平台的,官方支持Ubuntu 等 GNU/Linux 系统,并且是免费的开源软件。.dll
您在 Ubuntu 上看到的文件只是一个 Windows 库。如果程序存储在 Ubuntu 系统但在 Windows 上运行,或者如果您在 Ubuntu 中安装 Windows 驱动器,您可能会看到这一点。您可能还会看到它与能够使用Wine在 Ubuntu 上运行的程序有关,包括 Wine 附带的软件或您自动安装winetricks
以支持其他 Windows 软件的软件。这并不是要详尽列出您.dll
在 Ubuntu 上可能遇到的所有情况。(例如,它也可以是 OS/2 库。)不过,我相信这四种情况是最常见的。
归档时间: |
|
查看次数: |
11297 次 |
最近记录: |