Mengirim proyek c ++ Anda [ditutup]

Sep 04 2020

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

1 JesperJuhl Sep 04 2020 at 01:46

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).

1 BrechtSanders Sep 04 2020 at 04:25

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.

1 HolyBlackCat Sep 04 2020 at 05:08

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, lakukan set PATH=dan coba jalankan executable dengan mengetikkan namanya. Karena instalasi compiler tidak lagi ada di PATH, 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 di C:\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.