Saya telah membuat program sederhana dalam C ++ dengan Code :: Blocks.
Jika saya menjalankannya dari Code :: Blocks, ia berfungsi dengan benar; tetapi jika saya menjalankannya dengan menggandakan pada file yang dapat dieksekusi, sebuah jendela muncul dengan pesan ini:
Program tidak dapat memulai karena libgcc_s_dw2-1.dll hilang dari komputer Anda.
Coba instal ulang program untuk memperbaiki masalah ini.
Jadi apa masalahnya? Apa yang harus saya lakukan untuk memperbaikinya?
Di Eclipse, Anda akan menemukannya di bawah properti proyek> C / C ++ Build> Pengaturan> MinGW C ++ Linker> Lain-lain
Anda harus menambahkannya ke "bendera penghubung" di bagian atas; tidak ada tempat lain. Kemudian bangun kembali.
Saya telah menemukan bahwa menghubungkan mereka yang meledak secara statis ukurannya hingga 1.400 kb bahkan dengan optimasi. Ini 277kb lebih besar dibandingkan dengan hanya menyalin di atas DLL bersama. Ini 388kb lebih besar juga setelah UPX segalanya. Sangat kalah / kalah di sini. Cukup sertakan DLL karena pengguna akhir dapat memutuskan untuk menghapusnya atau tidak jika mereka menginstalnya di tempat lain.
sumber
Kode :: Blok: tambahkan '-static' di pengaturan-> compiler-> Pengaturan tautan-> Opsi tautan lainnya.
sumber
Temukan dll di PC Anda, dan salin ke direktori yang sama dengan yang dapat dieksekusi.
sumber
Lihat juga . Itu memecahkan masalah saya.
Ngomong-ngomong, apakah sudah pasti
compiler
ditandai? Mungkinlinker
istilah yang lebih cocok di sini?sumber
Salin "libgcc_s_dw2-1.dll" ke make.exe adalah. (Jika Anda menggunakan Msys, salin ke \ msys \ bin) Pastikan path untuk make.exe diatur di env. PATH (jika make.exe ada di folder "bin", kemungkinan besar, dan Anda memiliki msys, ini \ msys \ bin) Kompilasi, rund, debug, dll. Senang.
sumber
Pergi ke pohon http MinGW sourceforge.net. Di bawah Home / MinGW / Base / gcc / Version4 (atau penggunaan versi apa pun yang digunakan) / gcc-4 (versi) / Anda akan menemukan file seperti gcc-core-4.8.1-4-mingw32-dll.tar.lzma . Ekstrak dan pergi ke folder bin di mana Anda akan menemukan libgcc_s_dw2-1.dll Anda dan lain-lain. Salin dan rekatkan apa yang Anda butuhkan ke direktori tempat sampah Anda.
sumber
Saya bisa mengatasinya dengan menggunakan "gcc" bukannya "g ++" untuk kompiler saya. Saya tahu ini bukan pilihan bagi kebanyakan orang, tetapi saya pikir saya akan menyebutkannya sebagai opsi penyelesaian :)
sumber
Tidak bisakah Anda meletakkannya di system32 atau sesuatu seperti yang Anda lakukan dengan file dll yang lain, sehingga setiap program yang Anda coba jalankan tidak akan memiliki masalah pada mesin Anda?
Saya hanya perlu jalan di mana meletakkannya.
Agak menyebalkan untuk meletakkannya di direktori setiap kali saya menjalankan program yang baru saja saya buat ...
Sunting: Saya menemukan solusinya:
sumber
Cukup buka Pengaturan >> Compiler dan Debugger, lalu klik tab Pengaturan Linker dan buka kontrol edit "Opsi tautan lain" dan tempel: "-static-libgcc -static-libstdc ++" untuk itu, tidak ada opsi flag compiler dalam opsi Flag Compiler untuk Code :: Blocks jadi itulah cara untuk menyelesaikan masalah itu, saya datang ke sini mencari solusi juga dan satu orang yang memposting tentang "-static-libgcc -static-libstdc ++" memberikan ide yang tepat, dan Saya mengurutkan sisanya secara tidak sengaja tetapi berhasil, file tersebut dapat diklik sekarang dari luar Code :: Blocks, berfungsi langsung dari desktop.
sumber
Tambahkan path ke dll ke dalam variabel lingkungan PATH.
sumber
Termasuk -static-libgcc pada baris kompilasi, menyelesaikan masalah
Menurut: @hardmath
Anda juga dapat membuat alias di profil [. Profil] jika Anda menggunakan MSYS2 misalnya
Sekarang perintah GCC Anda berjalan juga ;-)
sumber
Tambahkan "-static" ke opsi tautan lain untuk menyelesaikan masalah ini. Saya baru saja mengalami masalah yang sama setelah saya menguji ini pada sistem lain, tetapi tidak pada saya sendiri, jadi bahkan jika Anda belum melihat ini pada sistem pengembangan Anda, Anda harus memeriksa bahwa Anda memiliki set ini jika Anda menghubungkan secara statis.
Catatan lain, menyalin DLL ke folder yang sama dengan yang dapat dieksekusi bukanlah solusi karena mengalahkan ide menghubungkan secara statis.
Pilihan lain adalah menggunakan versi TDM dari MinGW yang memecahkan masalah ini.
Perbarui edit: ini mungkin tidak menyelesaikan masalah untuk semua orang. Alasan lain yang baru-baru ini saya temukan untuk ini adalah ketika Anda menggunakan perpustakaan yang dikompilasi oleh orang lain, dalam kasus saya itu adalah SFML yang dikompilasi secara tidak benar dan karenanya memerlukan DLL yang tidak ada karena dikompilasi dengan versi MinGW yang berbeda dari apa yang saya menggunakan. Saya menggunakan dwarf build, ini menggunakan yang lain, jadi saya tidak punya DLL di mana saja dan tentu saja, saya tidak menginginkannya karena itu adalah build statis. Solusinya mungkin dengan menemukan bangunan perpustakaan lain, atau membangunnya sendiri.
sumber
Bekerja dengan msys2 Saya telah memperoleh kesalahan yang sama dengan mencoba menjalankan versi rilis proyek saya di lingkungan debug. Solusi untuk masalah saya jelas: gunakan executable dengan simbol debug.
sumber
Di CodeBlocks Anda dapat pergi ke Pengaturan ... Compiler ... dan pilih 1) dua item di kotak biru atau 2) satu item di kotak hijau
sumber
Jika Anda bertanya-tanya di mana Anda dapat mengunduh pustaka bersama (meskipun ini tidak akan berfungsi pada perangkat klien Anda kecuali jika Anda menyertakan dll) di sini adalah tautannya: https://de.osdn.net/projects/mingw/downloads/72215/ libgcc-9.2.0-1-mingw32-dll-1.tar.xz /
sumber