Spiele, die mit Unity3D für Linux erstellt wurden, enthalten .dll
Dateien in ihrem Datenordner GameDataFolder/Managed
.
Was seltsam ist, weil ich dachte, dass Linux .so
Dateien anstelle von .dll
Dateien verwendet.
(Gleiches gilt auch für Android-Unity3D-Apps.)
Warum?
quelle
.dll
und.so
, unter Linux bedeutungslos sind. Sie werden nur zu unserer Bequemlichkeit verwendet.gcc
Wird keine Bibliothek finden, die wie zB geliefert wird,-lm
wenn der Dateiname nicht mit.so
oder.a
oder versionierten Varianten davon endet .Die
.dll
Dateien inGameDataFolder/Managed
gehören zu einem nativen Code-Programm, das intern Mono verwendet.Der Motor Unity Spiel bettet Mono (auch auf den meisten Windows - Plattformen).
Plattformübergreifende ausführbare Dateien und gemeinsam genutzte Bibliotheken, die entweder von .NET Common Language Runtime oder von Mono ausgeführt werden können, werden häufig mit
.exe
und.dll
Suffixen benannt, auch wenn sie nicht Windows-spezifisch sind. Wenn Sie eine.dll
Datei in einem Programm für ein GNU / Linux-System wie Ubuntu oder für ein anderes Betriebssystem als Windows finden, ist dies normalerweise der Grund. Die meiste Zeit, in der Sie ein.dll
in einem Ubuntu-System finden, erklärt Golboths Antwort es. Aber das ist nicht ganz das, was hier los ist.Die Unity-Spiele-Engine - die in den meisten Ubuntu-Versionen nicht mit der standardmäßigen grafischen Oberfläche zu verwechseln ist - ist eine beliebte proprietäre plattformübergreifende Spiele-Engine. Diese Engine wird nicht über .NET Framework oder Mono ausgeführt. Stattdessen wird Mono eingebettet , was bedeutet, dass Mono darauf ausgeführt wird. Auf diese Weise schreiben Entwickler den Code, den sie für ihr Spiel benötigen, der noch nicht Teil der Unity-Engine ist.
Im Allgemeinen kann Mono auf die gleiche Weise wie die .NET CLR von Microsoft verwendet werden, um vollständige .NET / Mono-Programme auszuführen. Mono ist jedoch auch so konzipiert, dass es problemlos in native Code-Anwendungen eingebettet werden kann , einschließlich der Möglichkeit, diese Anwendungen anzupassen . Genau das passiert in der Situation, die Sie beschreiben. Die angezeigten Dateien gehören nicht zu einem Programm, das direkt auf Mono oder der .NET-CLR ausgeführt wird. Stattdessen gehören sie zu einem Native-Code-Programm, in das Mono eingebettet ist.
Wie die Unity Game Engine Mono verwendet
Die Unity-Game-Engine, die hauptsächlich in C ++ geschrieben ist, hostet eine eigene Instanz von Mono, die die über den Paket-Manager Ihres Systems installierte Version (falls vorhanden) nicht verwendet und möglicherweise von dieser Version abweicht. Diese eingebettete Mono-Laufzeit kann nicht zum Ausführen von eigenständigen .NET / Mono-Programmen verwendet werden, da dies nicht der Zweck ist. Stattdessen verwendet der native Codeteil des Moduls ihn zum Ausführen von CIL-Code. (CIL ist die Common Intermediate Language , deren offizieller Name MSIL oder Microsoft Intermediate Language ist, da Microsoft sie ursprünglich entwickelt hat.) Programmierer, die Spiele mit der Unity-Engine erstellen, schreiben in der Regel ihren eigenen Code in C #, jedoch in einigen anderen Sprachen sind unterstützt.
Die Unity-Engine bettet Mono sogar in Windows ein. Für Universal Windows Platform- Spiele - und keine anderen Plattformen - wird Microsoft .NET Framework anstelle von Mono verwendet. Die meisten Unity-Spiele auf den meisten Plattformen, einschließlich der meisten Mobilgeräte und Spielekonsolen sowie Ubuntu und Windows, verwenden jedoch Mono. Auf einigen Plattformen ist IL2CPP als Alternative zu Mono verfügbar, und auf einigen wird nur IL2CPP unterstützt. Weitere Informationen finden Sie unter Skripteinschränkungen .
Andere Situationen, in denen unter
.dll
Ubuntu möglicherweise Dateien angezeigt werdenEs wurden zwei Situationen beschrieben, in denen unter
.dll
Ubuntu wahrscheinlich eine Datei angezeigt wird:.dll
s, die Sie auf einem Ubuntu-System sehen werden, sind. Es ist einfach nicht so, wofür die.dll
Dateien in IhremGameDataFolder/Managed
Ordner bestimmt sind.Es gibt zwei weitere Fälle, in denen Sie möglicherweise eine
.dll
Datei auf Ubuntu sehen:.dll
Dateien anstelle von.exe
Dateien, auch wenn es sich bei dem, was Sie kompilieren, nicht um eine Bibliothek handelt. Die .NET Core-Laufzeit (CoreCLR genannt) und nicht das reguläre .NET Framework oder Mono führen diese Dateien aus. .NET Core ist ein Microsoft - Produkt, aber im Gegensatz zu dem Standard - .NET Framework .NET Core ist Cross-Plattform mit offizieller Unterstützung für GNU / Linux - Systeme wie Ubuntu, und es ist freie Open - Source - Software ..dll
Datei, die Sie unter Ubuntu sehen, nur eine Windows-Bibliothek. Möglicherweise wird dies angezeigt, wenn das Programm auf einem Ubuntu-System gespeichert ist, aber unter Windows ausgeführt wird oder wenn Sie ein Windows-Laufwerk in Ubuntu bereitstellen. Sie können es auch in Verbindung mit Programmen sehen, die unter Ubuntu mit Wine ausgeführt werden können , einschließlich Software, die mit Wine geliefert wird oder die Sie automatisch installierenwinetricks
, um andere Windows-Software zu unterstützen.Dies ist kein Versuch, alle Umstände, unter denen Sie
.dll
auf Ubuntu stoßen könnten, vollständig aufzulisten. (Zum Beispiel könnte es sich auch um eine OS / 2-Bibliothek handeln .) Ich glaube jedoch, dass diese vier Fälle die häufigsten sind.quelle