Game yang dibuat dengan Unity3D untuk Linux berisi .dll
file di folder data mereka GameDataFolder/Managed
.
Yang aneh karena saya pikir Linux menggunakan .so
file, bukan .dll
file.
(Hal yang sama juga berlaku untuk aplikasi Android-Unity3D.)
Mengapa?
sumber
.dll
dan.so
, tidak ada artinya di Linux. Mereka hanya digunakan untuk kenyamanan kita.gcc
tidak akan menemukan perpustakaan yang disediakan seperti misalnya-lm
jika nama file tidak diakhiri dengan.so
atau.a
varian versi darinya..dll
File - file dalamGameDataFolder/Managed
milik program kode asli yang menggunakan Mono secara internal.Mesin permainan Unity menanamkan Mono (bahkan di sebagian besar platform Windows).
Eksekusi cross-platform dan pustaka bersama yang dapat dijalankan baik oleh .NET Common Language Runtime atau Mono sering dinamai dengan
.exe
dan.dll
sufiks, meskipun tidak khusus untuk Windows. Ketika Anda menemukan.dll
file dalam program untuk sistem GNU / Linux seperti Ubuntu, atau untuk OS apa pun selain Windows, biasanya ini alasannya. Sebagian besar waktu Anda menemukan.dll
di sistem Ubuntu, jawaban Golboth menjelaskannya. Tapi itu tidak cukup apa yang terjadi di sini.Mesin permainan Unity - yang tidak harus dikacaukan dengan antarmuka grafis default di sebagian besar rilis Ubuntu - adalah mesin permainan lintas platform berpemilik yang populer. Mesin ini tidak berjalan di atas .NET Framework atau Mono. Alih-alih, ia menyematkan Mono , yang artinya Mono berjalan di atasnya. Beginilah cara pengembang menulis kode apa pun yang dibutuhkan permainan mereka yang belum menjadi bagian dari mesin Unity.
Secara umum, Mono dapat digunakan dengan cara yang sama dengan Microsoft. NET CLR biasanya digunakan, untuk menjalankan program .NET / Mono yang lengkap. Tetapi Mono juga dirancang agar mudah disematkan dalam aplikasi kode asli , termasuk untuk memungkinkan aplikasi tersebut disesuaikan . Itulah yang terjadi dalam situasi yang Anda gambarkan. File yang Anda lihat bukan milik program yang berjalan langsung di atas Mono atau .NET CLR. Sebaliknya mereka milik program kode asli yang menyematkan Mono.
Bagaimana Mesin Game Unity Menggunakan Mono
Mesin permainan Unity, yang sebagian besar ditulis dalam C ++, menampung instance Mono sendiri, yang tidak menggunakan - dan mungkin berbeda dari - versi (jika ada) yang diinstal melalui manajer paket sistem Anda. Runtime Mono tertanam ini tidak dapat digunakan untuk menjalankan program .NET / Mono mandiri, karena itu bukan tujuannya. Sebaliknya, bagian kode asli mesin menggunakannya untuk menjalankan kode CIL. (CIL adalah Common Intermediate Language , yang merupakan nama resminya. Sebelumnya disebut MSIL atau Microsoft Intermediate Language, sejak Microsoft mengembangkannya pada awalnya.) Programer yang membuat game yang menggunakan mesin Unity biasanya menulis kode mereka sendiri dalam C #, meskipun beberapa bahasa lain didukung.
Mesin Unity menanamkan Mono bahkan di Windows. Untuk game Universal Windows Platform - dan tidak ada platform lain - ia menggunakan Microsoft .NET Framework alih-alih Mono. Tetapi mayoritas game Unity di sebagian besar platform, termasuk sebagian besar perangkat seluler dan konsol game, dan termasuk Ubuntu dan Windows, menggunakan Mono. Pada beberapa platform, IL2CPP tersedia sebagai alternatif untuk Mono, dan hanya beberapa yang mendukung IL2CPP. Lihat pembatasan Scripting untuk detailnya.
Situasi Lain Di Mana Anda Mungkin Melihat
.dll
File di UbuntuDua situasi di mana Anda cenderung melihat
.dll
file di Ubuntu telah dijelaskan:.dll
akan Anda lihat pada sistem Ubuntu. Itu tidak terjadi untuk apa.dll
file dalamGameDataFolder/Managed
folder Anda .Ada dua kasus umum yang cukup umum di mana Anda dapat melihat
.dll
file di Ubuntu:.dll
file daripada.exe
file, bahkan ketika apa yang Anda kompilasi bukan perpustakaan. NET Core runtime (disebut CoreCLR), dan bukan .NET Framework atau Mono biasa, menjalankan file-file ini. .NET Core adalah produk Microsoft, tetapi tidak seperti standar .NET Framework, .NET Core adalah cross-platform dengan dukungan resmi untuk sistem GNU / Linux seperti Ubuntu, dan itu adalah perangkat lunak open source gratis ..dll
file yang Anda lihat di Ubuntu hanya akan menjadi pustaka Windows. Anda dapat melihat ini jika program sedang menyimpan sistem Ubuntu tetapi dijalankan pada Windows, atau jika Anda memasang drive Windows di Ubuntu. Anda juga dapat melihatnya dalam kaitannya dengan program yang dapat dijalankan di Ubuntu menggunakan Wine , termasuk perangkat lunak yang menyertai Wine atau yang Anda instal secara otomatiswinetricks
untuk mendukung perangkat lunak Windows lainnya.Ini bukan upaya untuk mencantumkan secara lengkap semua keadaan di mana Anda mungkin menemukan
.dll
Ubuntu. (Misalnya, bisa juga perpustakaan OS / 2. ) Namun, saya percaya keempat kasus tersebut adalah yang paling umum.sumber