Что .dlls делают в программах Linux?

Игры, которые были сделаны с Unity3D для Linux, содержат .dll файлы в их папке данных GameDataFolder/Managed.

Который является странным, потому что я думал тот Linux использование .so файлы вместо .dll файлы.

(То же верно для приложений Android-Unity3D также.)

Почему?

20
задан 9 September 2017 в 14:01

2 ответа

Игры, о которых Вы говорите, основаны на Платформе.NET и работающий с Моно, который является бесплатной и реализацией с открытым исходным кодом Платформы.NET Microsoft.

, поскольку этими приложениями является базирующаяся.NET, блоки имеют .dll расширение. Таким образом, Вы видите файлы DLL в папках.

Одна программа.NET, разработанная для межплатформенного использования, может работать на Windows, Linux или Mac, с теми же "двоичными файлами" (включая DLLs, которые являются также блоками), которые компилируются в MSIL и нуждаются в.NET, во время выполнения / Моно во время выполнения, чтобы быть выполненными.

Обратите внимание на то, что у Вас также есть некоторые бесплатные приложения (не только игры) на основе Моно Платформы, доступной в репозиториях Ubuntu. Например: Девчонка-сорванец.

25
ответ дан 23 November 2019 в 01:50

.dll файлы в GameDataFolder/Managed принадлежите программе собственного кода, которая использует Моно внутренне.

Игровой механизм Единицы встраивает Моно (даже на большинстве платформ Windows).

С межплатформенными исполняемыми файлами и совместно использованными библиотеками, которые могут быть выполнены или Общеязыковой средой выполнения.NET или Моно, часто называют .exe и .dll суффиксы, соответственно, даже когда они не характерны для Windows. Когда Вы находите a .dll файл в программе для системы GNU/Linux как Ubuntu, или для любой ОС, но Windows, это обычно почему. Большую часть времени Вы находите a .dll в системе Ubuntu ответ Golboth объясняет это. Но это не совсем, что продолжается здесь.

Игровой механизм Единицы - который не должен быть перепутан с графическим интерфейсом по умолчанию в большинстве релизов Ubuntu - является популярным собственным межплатформенным игровым механизмом. Этот механизм не работает сверху Платформы.NET или Моно. Вместо этого это встраивает Моно, который должен сказать что Моно выполнения сверху его. Это - то, как разработчики пишут любой код их игровые потребности, который уже не является частью механизма Единицы.

В целом, Моно может использоваться тем же путем.NET Microsoft, CLR обычно используется, для выполнения полной.NET / Моно программ. Но Моно также разработан, чтобы быть легко встраиваемым в приложениях собственного кода, включая позволить тем приложениям быть настроенными. Это - то, что продолжается в ситуации, которую Вы описываете. Файлы, которые Вы видите, не принадлежат программе, которая работает непосредственно сверху Моно или CLR.NET. Вместо этого они принадлежат программе собственного кода, которая встраивает Моно.

Как игровое моно использование механизма единицы

Игровой механизм Единицы, который записан главным образом в C++, размещает свой собственный экземпляр Моно, который не использует - и может отличаться от - версия (если таковые имеются) установленный через диспетчер пакетов Вашей системы. Это встроенное Моно время выполнения не может использоваться для выполнения автономной.NET / Моно программ, потому что это не ее цель. Вместо этого часть собственного кода механизма использует его для выполнения кода CIL. (CIL является Общим Промежуточным языком, который является его официальным названием. Это ранее назвали MSIL или промежуточным языком Microsoft, так как Microsoft разработала его первоначально.) Программисты, делающие игры, которые используют механизм Единицы обычно, пишут свой собственный код в C#, хотя некоторые другие языки поддерживаются.

Механизм Единицы встраивает Моно даже в Windows. Для Универсальных игр платформы Windows - и никаких других платформ - это использует Microsoft.NET Framework вместо Моно. Но большинство игр Единицы на большинстве платформ, включая наиболее мобильные устройства и игровые консоли, и включая Ubuntu и Windows, использует Моно. На некоторых платформах IL2CPP доступен как альтернатива Моно, и на некоторых, только IL2CPP поддерживается. Посмотрите ограничения Сценариев для деталей.

Другие ситуации, где можно видеть .dll Файлы на Ubuntu

Две ситуации, где Вы, вероятно, будете видеть a .dll файл на Ubuntu был описан:

  1. Общая библиотека, которая предназначается, чтобы использоваться приложением.NET / Моно приложением. Ответ Golboth описывает это подробно. Это что большинство .dlls Вы будете видеть в системе Ubuntu. Это просто, оказывается, не что .dll файлы в Вашем GameDataFolder/Managed папка для.
  2. Код предоставляющего файла, который используется встроенным Моно временем выполнения для обеспечения "сценариев" для приложения собственного кода. Это - то, что продолжается в этом случае.

Существует два других довольно общих падежа, где можно видеть a .dll файл на Ubuntu:

  1. Компилятор для.NET Core производит .dll файлы, а не .exe файлы, даже когда то, что Вы компилируете, не является библиотекой. Время выполнения.NET Core (названный CoreCLR), а не регулярная Платформа.NET или Моно, петляет..NET Core является продуктом Microsoft, но в отличие от стандартной Платформы.NET.NET Core является межплатформенным с официальной поддержкой для систем GNU/Linux как Ubuntu, и это - бесплатное программное обеспечение с открытым исходным кодом.
  2. Иногда a .dll файл, который Вы видите на Ubuntu, просто будет библиотекой Windows. Можно видеть это, если программа хранится система Ubuntu, но работавший Windows, или если Вы монтируете диск Windows в Ubuntu. Можно также видеть его в связи с программами, которые могут быть выполненными на Ubuntu с помощью Вина, включая программное обеспечение, которое идет с Вином или что Вы устанавливаете автоматически с winetricks поддерживать другое программное обеспечение Windows.

Это не попытка исчерпывающе перечислить все обстоятельства, где можно встретиться с a .dll на Ubuntu. (Например, это могла также быть библиотека OS/2.) Однако я полагаю, что те четыре случая являются наиболее распространенными.

9
ответ дан 23 November 2019 в 01:50

Другие вопросы по тегам:

Похожие вопросы: