Gry utworzone za pomocą Unity3D dla systemu Linux zawierają .dll
pliki w folderze danych GameDataFolder/Managed
.
Co jest dziwne, ponieważ myślałem, że Linux używa .so
plików zamiast .dll
plików.
(To samo dotyczy aplikacji Android-Unity3D).
Dlaczego?
źródło
.dll
i.so
, są bez znaczenia w systemie Linux. Są używane tylko dla naszej wygody.gcc
nie znajdzie dostarczonej biblioteki, takiej jak np.-lm
jeśli jej nazwa pliku nie kończy się na.so
lub.a
jej wersjach.Te
.dll
plikiGameDataFolder/Managed
należą do natywnego kodu programu, który używa Mono wewnętrznie.Silnik gry Unity zawiera Mono (nawet na większości platform Windows).
Wieloplatformowe pliki wykonywalne i biblioteki współdzielone, które mogą być uruchamiane przez środowisko uruchomieniowe lub mono .NET Common Language, są często odpowiednio nazywane
.exe
i.dll
przyrostki, nawet jeśli nie są specyficzne dla systemu Windows. Gdy znajdziesz.dll
plik w programie dla systemu GNU / Linux, takiego jak Ubuntu, lub w dowolnym systemie operacyjnym innym niż Windows, zazwyczaj dzieje się tak. W większości przypadków znajdujesz się.dll
w systemie Ubuntu, odpowiedź Golbotha to wyjaśnia. Ale nie do końca o to tu chodzi.Silnik gry Unity - którego nie należy mylić z domyślnym interfejsem graficznym w większości wydań Ubuntu - jest popularnym, zastrzeżonym, wieloplatformowym silnikiem gier. Ten silnik nie działa na platformie .NET Framework lub Mono. Zamiast tego osadza Mono , co oznacza, że Mono działa na nim. W ten sposób programiści piszą kod, którego potrzebuje ich gra, która nie jest już częścią silnika Unity.
Ogólnie rzecz biorąc, Mono można używać w taki sam sposób, jak zwykle używa się Microsoft .NET CLR Microsoftu, aby uruchamiać kompletne programy .NET / Mono. Ale Mono zostało zaprojektowane tak, aby można je było łatwo osadzać w natywnych aplikacjach kodu , w tym w celu umożliwienia dostosowania tych aplikacji . Tak dzieje się w opisywanej sytuacji. Pliki, które widzisz, nie należą do programu działającego bezpośrednio na Mono lub .NET CLR. Zamiast tego należą do programu natywnego kodu, który osadza Mono.
Jak silnik gry Unity wykorzystuje mono
Silnik gry Unity, napisany głównie w C ++, obsługuje własną instancję Mono, która nie używa - i może różnić się od - wersji (jeśli taka istnieje) zainstalowanej za pośrednictwem menedżera pakietów systemu. Tego osadzonego środowiska wykonawczego Mono nie można używać do uruchamiania samodzielnych programów .NET / Mono, ponieważ nie jest to jego celem. Zamiast tego natywna część kodu silnika używa go do uruchamiania kodu CIL. (CIL to Common Intermediate Language , który jest jego oficjalną nazwą. Poprzednio nazywał się MSIL lub Microsoft Intermediate Language, ponieważ Microsoft pierwotnie go opracował.) Programiści tworzący gry korzystające z silnika Unity zwykle piszą swój własny kod w C #, chociaż niektóre inne języki są obsługiwane.
Silnik Unity osadza Mono nawet w systemie Windows. W przypadku gier Universal Windows Platform - i żadnych innych platform - używa Microsoft .NET Framework zamiast Mono. Ale większość gier Unity na większości platform, w tym na większości urządzeń mobilnych i konsol do gier, a także Ubuntu i Windows, używa Mono. Na niektórych platformach IL2CPP jest dostępny jako alternatywa dla Mono, a na niektórych obsługiwany jest tylko IL2CPP. Zobacz ograniczenia dotyczące skryptów informacje zawiera temat dotyczące .
Inne sytuacje, w których możesz zobaczyć
.dll
pliki w systemie UbuntuOpisano dwie sytuacje, w których prawdopodobnie zobaczysz
.dll
plik na Ubuntu:.dll
zobaczysz w systemie Ubuntu. Po prostu tak się nie dzieje z.dll
plikami w twoimGameDataFolder/Managed
folderze.Istnieją dwa inne dość typowe przypadki, w których możesz zobaczyć
.dll
plik na Ubuntu:.dll
pliki, a nie.exe
pliki, nawet jeśli to, co kompilujesz, nie jest biblioteką. Środowisko uruchomieniowe .NET Core (zwane CoreCLR), a nie zwykły .NET Framework lub Mono, uruchamia te pliki. .NET Core to produkt Microsoft, ale w przeciwieństwie do standardowego .NET Framework, .NET Core jest wieloplatformowy z oficjalną obsługą systemów GNU / Linux, takich jak Ubuntu, i jest darmowym oprogramowaniem typu open source ..dll
plik, który widzisz na Ubuntu, będzie po prostu biblioteką Windows. Możesz to zobaczyć, jeśli program jest przechowywany w systemie Ubuntu, ale działa w systemie Windows lub jeśli podłączasz dysk Windows w Ubuntu. Możesz również zobaczyć to w połączeniu z programami, które można uruchomić na Ubuntu przy użyciu Wine , w tym oprogramowaniem dostarczanym z Wine lub instalowanym automatycznie wwinetricks
celu obsługi innego oprogramowania Windows.Nie jest to próba wyczerpującego przedstawienia wszystkich okoliczności, w których możesz napotkać
.dll
na Ubuntu. (Na przykład może to być również biblioteka OS / 2 ). Uważam jednak, że te cztery przypadki są najczęstsze.źródło