Mengirim proyek c ++ Anda [ditutup]
Saya telah membuat kode aplikasi di c ++ menggunakan pustaka SFML. Saya mengkonfigurasinya menjadi blok kode untuk menjalankan program. Katakanlah sekarang saya ingin mengirim aplikasi ini ke teman saya, apa cara terbaik yang dapat saya lakukan agar dia tidak harus mengunduh banyak hal untuk menjalankannya?
Saya menggunakan kompiler MinGW.
Jawaban
Buat penginstal atau paket. Sebagai contoh; Di RedHat Linux Anda ingin membuat paket RPM. Di Windows, Anda ingin membuat file MSI. Apa pun yang Anda lakukan, paket yang Anda buat harus menggabungkan semua yang dibutuhkan aplikasi Anda untuk dijalankan dan meletakkannya di lokasi yang benar pada sistem target. Ini termasuk library Anda yang dapat dieksekusi, tetapi juga semua library yang Anda gunakan (termasuk library runtime kompiler Anda).
Dalam kebanyakan kasus, hanya mengirimkan .exe Anda dan semua ketergantungannya sudah cukup. Dalam beberapa kasus, Anda mungkin juga perlu mengirimkan file lain yang diperlukan untuk menjalankan aplikasi seperti file konfigurasi, gambar, ikon ...
Anda dapat menggunakan copypedepsdengan -rbendera darihttps://github.com/brechtsanders/pedeps untuk menyalin file .exe Anda beserta file dependansinya .dll ke dalam folder kosong.
Kemudian Anda dapat membuat zip semua yang ada di folder itu dan mengirimkannya ke seseorang yang dapat mengekstraknya dan menjalankan .exe.
Atau Anda dapat membuat penginstal yang tepat untuk mendistribusikan file yang sama.
Program Anda memerlukan beberapa .dlluntuk dijalankan: beberapa adalah sistem, beberapa dikirimkan dengan kompiler, dan beberapa berasal dari pustaka yang Anda gunakan (SFML). Anda perlu mengirimkan semua .dllitu (kecuali yang sistem) dengan Anda .exe, dan mereka harus berada di direktori yang sama.
Tidak masalah jika Anda membuat penginstal yang tepat atau mengirim arsip zip ke teman Anda. (Jika ini adalah arsip, mereka mungkin harus mengekstraknya secara manual sebelum menjalankan .exe.)
Pertanyaannya adalah bagaimana mencari tahu mana yang .dllakan dikirim. Ada beberapa pendekatan:
Buka konsol, di
cdmana Anda.exeberada, lakukanset PATH=dan coba jalankan executable dengan mengetikkan namanya. Karena instalasi compiler tidak lagi ada diPATH, ia seharusnya tidak melihat.dlls di sana, dan seharusnya mengeluh tentang mereka yang hilang. Setelah Anda memberikan satu.dll, itu akan meminta yang berikutnya.Pendekatan yang lebih beradab adalah dengan menggunakan alat seperti
ntdlluntuk membuat daftar semua yang.dlldigunakan aplikasi Anda. Kemudian salin, abaikan yang sistem (terletak diC:\Windowsatau subdirektori).
Perhatikan bahwa kedua pendekatan bergantung pada tidak adanya subdirektori yang asing .dlldi dalam C:\Windowsatau; beberapa pemasang yang ditulis dengan buruk suka meletakkannya sendiri .dlldi sana. Untuk memeriksanya, buat daftar semua .dllyang disertakan dengan kompiler Anda (mereka harus berada di direktori yang sama dengan gcc.exe), dan yang berasal dari perpustakaan Anda (SFML). Kemudian cari .dlls dengan nama yang sama di dalam C:\Windowsdan subdirektori, dan jika Anda menemukannya, hapus.