Les .dll
fichiers GameDataFolder/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 Ubuntu
Deux situations où vous êtes susceptible de voir un .dll
fichier sur Ubuntu ont été décrites:
- Une bibliothèque partagée destinée à être utilisée par une application .NET / Mono. La réponse de Golboth décrit cela en détail. C'est ce que
.dll
vous verrez le plus sur un système Ubuntu. Il ne se trouve tout simplement pas à quoi servent les .dll
fichiers de votre GameDataFolder/Managed
dossier.
- Fichier fournissant du code utilisé par un runtime Mono intégré pour fournir des «scripts» pour une application de code natif. C'est ce qui se passe dans ce cas.
Il existe deux autres cas raisonnablement courants où vous pouvez voir un .dll
fichier sur Ubuntu:
- Le compilateur pour .NET Core produit des
.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 .
- Parfois, un
.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 avec winetricks
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.