Lingkungan C ++ pilihan saya saat ini adalah edisi Microsoft Visual Studio 2005 Express yang gratis dan sangat bagus. Dari waktu ke waktu saya telah mengirimkan file rilis .exe ke orang lain dengan hasil yang memuaskan. Namun baru-baru ini saya membuat penemuan yang mengganggu bahwa hasil yang menyenangkan didasarkan pada lebih banyak keberuntungan yang saya inginkan. Mencoba menjalankan salah satu program ini di kotak XP lama (vintage 2001, tidak diperbarui dengan teliti), tidak memberi saya apa-apa selain pesan buruk "Sistem tidak dapat menjalankan x.exe" (atau serupa).
Beberapa googling mengungkapkan bahwa dengan toolset ini, bahkan menentukan hasil tautan statis dalam hello-world.exe sederhana sebenarnya mengandalkan file .dll tambahan (msvcm80.dll dll.). Sistem skema versi yang sangat rumit (manifeskan file siapa?) Tidak akan membiarkan .exe berjalan tanpa versi .dll yang tepat. Saya tidak ingin atau membutuhkan barang-barang ini, saya hanya ingin .exe berisi diri kuno yang tidak melakukan apa pun kecuali operasi penyebut umum terendah Win32 dan berjalan pada OS win32 lama.
Adakah yang tahu jika mungkin untuk melakukan apa yang ingin saya lakukan dengan perangkat saya yang sudah ada?
Terima kasih.
sumber
error LNK2038: mismatch detected for 'RuntimeLibrary': value 'MD_DynamicRelease' doesn't match value 'MT_StaticRelease'
. Apakah ada tempat lain untuk mengubah jenis bangunan? Saya sedang membangun aplikasi wxWigets, seperti @BillForster. Jadi, apakah saya harus membangun kembali wxWidgets? Bagaimana aku melakukan itu?Pengalaman saya di Visual Studio 2010 adalah bahwa ada dua perubahan yang diperlukan agar tidak memerlukan DLL. Dari halaman properti proyek (klik kanan pada nama proyek di jendela Solution Explorer):
Di bawah Properti Konfigurasi -> Umum, ubah bidang "Penggunaan MFC" menjadi "Gunakan MFC di Perpustakaan Statis".
Di bawah Properti Konfigurasi -> C / C ++ -> Pembuatan Kode, ubah bidang "Perpustakaan Waktu Proses" menjadi "Multi-Threaded (/ MT)"
Tidak yakin mengapa keduanya dibutuhkan. Saya menggunakan ini untuk menghapus ketergantungan pada glut32.dll.
Ditambahkan nanti: Saat membuat perubahan ini pada konfigurasi, Anda harus membuatnya menjadi "Semua Konfigurasi" --- Anda dapat memilih ini di bagian atas jendela Properties. Jika Anda membuat perubahan hanya pada konfigurasi Debug, itu tidak akan berlaku untuk konfigurasi Rilis, dan sebaliknya.
sumber
Saya memiliki masalah ketergantungan yang sama dan saya juga tahu bahwa Anda dapat menyertakan VS 8.0 DLL (hanya rilis! Bukan debug! --- dan program Anda juga harus dirilis) dalam folder dengan nama yang sesuai, di folder induk dengan .exe Anda:
Cara: Menerapkan menggunakan XCopy (MSDN)
Perhatikan juga bahwa semuanya dijamin menjadi kacau jika Anda perlu memiliki kode C ++ dan C dalam .exe yang terhubung secara statis karena Anda akan mendapatkan konflik linker yang hanya dapat diselesaikan dengan mengabaikan libXXX.lib yang benar dan kemudian menautkan secara dinamis (DLL) .
Terakhir, dengan toolset yang berbeda (VC ++ 6.0) hal-hal "hanya berfungsi", karena Windows 2000 dan yang lebih baru memiliki DLL yang benar diinstal.
sumber
Berkenaan dengan tanggapan Jared, memiliki Windows 2000 atau lebih baik belum tentu memperbaiki masalah yang dihadapi. Tanggapan Rob berhasil, namun ada kemungkinan bahwa perbaikan ini menimbulkan masalah keamanan, karena pembaruan Windows tidak akan dapat menambal aplikasi yang dibuat seperti itu.
Di posting lain, Nick Guerrera menyarankan untuk mengemas Visual C ++ Runtime Redistributable dengan aplikasi Anda, yang menginstal dengan cepat, dan tidak bergantung pada Visual Studio.
sumber