Les jeux créés avec Unity3D pour Linux contiennent des .dll
fichiers dans leur dossier de données GameDataFolder/Managed
.
Ce qui est bizarre parce que je pensais que Linux utilise des .so
fichiers au lieu de .dll
fichiers.
(Il en va de même pour les applications Android-Unity3D également.)
Pourquoi?
la source
.dll
et.so
, n'ont aucun sens sous Linux. Ils ne sont utilisés que pour notre commodité.gcc
ne trouvera pas une bibliothèque fournie comme par exemple-lm
si son nom de fichier ne se termine pas par.so
ou.a
ou des versions versionnées de celui-ci.Les
.dll
fichiersGameDataFolder/Managed
appartiennent à un programme de code natif qui utilise Mono en interne.Le moteur de jeu Unity intègre Mono (même sur la plupart des plates-formes Windows).
Les exécutables multiplateformes et les bibliothèques partagées qui peuvent être exécutés soit par le .NET Common Language Runtime soit par Mono sont souvent nommés avec
.exe
et.dll
suffixes, respectivement, même lorsqu'ils ne sont pas spécifiques à Windows. Lorsque vous trouvez un.dll
fichier dans un programme pour un système GNU / Linux comme Ubuntu, ou pour tout système d'exploitation mais Windows, c'est généralement la raison. La plupart du temps, vous trouvez un.dll
dans un système Ubuntu, la réponse de Golboth l' explique. Mais ce n'est pas tout à fait ce qui se passe ici.Le moteur de jeu Unity - qui ne doit pas être confondu avec l'interface graphique par défaut dans la plupart des versions d'Ubuntu - est un moteur de jeu multiplateforme propriétaire et populaire. Ce moteur ne fonctionne pas sur .NET Framework ou Mono. Au lieu de cela, il intègre Mono , c'est-à-dire que Mono fonctionne dessus. C'est ainsi que les développeurs écrivent le code dont leur jeu a besoin et qui ne fait pas déjà partie du moteur Unity.
En général, Mono peut être utilisé de la même manière que le .NET CLR de Microsoft est généralement utilisé, pour exécuter des programmes .NET / Mono complets. Mais Mono est également conçu pour être facilement intégrable dans des applications de code natif , notamment pour permettre à ces applications d'être personnalisées . C'est ce qui se passe dans la situation que vous décrivez. Les fichiers que vous voyez n'appartiennent pas à un programme qui s'exécute directement au-dessus de Mono ou du .NET CLR. Au lieu de cela, ils appartiennent à un programme en code natif qui intègre Mono.
Comment le moteur de jeu Unity utilise Mono
Le moteur de jeu Unity, qui est écrit principalement en C ++, héberge sa propre instance de Mono, qui n'utilise pas - et peut être différente de - la version (le cas échéant) installée via le gestionnaire de packages de votre système. Ce runtime Mono intégré ne peut pas être utilisé pour exécuter des programmes .NET / Mono autonomes, car ce n'est pas son objectif. Au lieu de cela, la partie de code natif du moteur l'utilise pour exécuter le code CIL. (CIL est Common Intermediate Language , qui est son nom officiel. Il était auparavant appelé MSIL ou Microsoft Intermediate Language, car Microsoft l'a développé à l'origine.) Les programmeurs qui créent des jeux qui utilisent le moteur Unity écrivent généralement leur propre code en C #, bien que d'autres langues sont pris en charge.
Le moteur Unity intègre Mono même dans Windows. Pour les jeux de plateforme Windows universelle - et aucune autre plateforme - il utilise Microsoft .NET Framework au lieu de Mono. Mais la majorité des jeux Unity sur la plupart des plates-formes, y compris la plupart des appareils mobiles et des consoles de jeux, y compris Ubuntu et Windows, utilisent Mono. Sur certaines plates-formes, IL2CPP est disponible comme alternative à Mono, et sur quelques-unes seulement IL2CPP est pris en charge. Voir Restrictions de script pour plus de détails.
Autres situations où vous pouvez voir des
.dll
fichiers sur UbuntuDeux situations où vous êtes susceptible de voir un
.dll
fichier sur Ubuntu ont été décrites:.dll
vous verrez le plus sur un système Ubuntu. Il ne se trouve tout simplement pas à quoi servent les.dll
fichiers de votreGameDataFolder/Managed
dossier.Il existe deux autres cas raisonnablement courants où vous pouvez voir un
.dll
fichier sur Ubuntu:.dll
fichiers plutôt que des.exe
fichiers, même lorsque ce que vous compilez n'est pas une bibliothèque. Le runtime .NET Core (appelé CoreCLR), et non le .NET Framework ou Mono normal, exécute ces fichiers. .NET Core est un produit Microsoft, mais contrairement au .NET Framework standard, .NET Core est multiplateforme avec un support officiel pour les systèmes GNU / Linux comme Ubuntu, et il s'agit d'un logiciel open source gratuit ..dll
fichier que vous voyez sur Ubuntu sera juste une bibliothèque Windows. Vous pouvez le voir si le programme est stocké sur un système Ubuntu mais s'exécute sur Windows, ou si vous montez un lecteur Windows dans Ubuntu. Vous pouvez également le voir en relation avec des programmes pouvant être exécutés sur Ubuntu à l'aide de Wine , y compris les logiciels fournis avec Wine ou que vous installez automatiquement avecwinetricks
pour prendre en charge d'autres logiciels Windows.Il ne s'agit pas d'une liste exhaustive de toutes les circonstances dans lesquelles vous pouvez rencontrer un
.dll
sur Ubuntu. (Par exemple, il pourrait également s'agir d' une bibliothèque OS / 2. ) Cependant, je pense que ces quatre cas sont les plus courants.la source