Saya telah menginstal Pratinjau Rilis Visual Studio 2012, dan tampaknya baik-baik saja, tetapi sekarang ketika saya mencoba menggunakan Visual Studio 2010 untuk mengkompilasi proyek C ++, saya mendapatkan pesan kesalahan berikut:
LINK: kesalahan fatal LNK1123: kegagalan selama konversi ke COFF: file tidak valid atau rusak
Saya tidak 100% yakin akan hal ini, tetapi tampaknya terkait dengan proyek yang memiliki .rc
file (sumber daya) di dalamnya.
Saya sudah mencoba memperbaiki Visual Studio 2010 dari Tambah / Hapus program dan reboot, tetapi ini tidak berpengaruh.
Saya juga mendapatkan kesalahan yang sama jika saya menggunakan Visual Studio 2012 RC untuk mengkompilasi proyek C ++ ketika diatur untuk menggunakan Visual Studio 2010 toolset. Memutakhirkan ke Visual Studio 2011 toolset memperbaiki masalah (tapi tentu saja saya tidak ingin melakukan ini untuk kode produksi).
Pembaruan: Saya telah menghapus instalasi Visual Studio 2012 , reboot, dan masalahnya masih berlanjut! Tolong!
sumber
Jawaban:
Utas MSDN ini menjelaskan cara memperbaikinya.
Untuk meringkas:
Nonaktifkan penautan tambahan, dengan masuk ke
atau instal VS2010 SP1.
Suntingan (@CraigRinger): Perhatikan bahwa menginstal VS 2010 SP1 akan menghapus kompiler 64-bit . Anda perlu menginstal paket kompiler VS 2010 SP1 untuk mendapatkannya kembali.
Ini mempengaruhi Microsoft Windows SDK 7.1 untuk Windows 7 dan .NET 4.0 serta Visual Studio 2010 .
sumber
Jika menonaktifkan tautan tambahan tidak berfungsi untuk Anda, dan mematikan "Embed Manifest" juga tidak berfungsi, maka cari jalur Anda untuk beberapa versi CVTRES.exe.
Dengan debugging dengan opsi / VERBOSE linker saya menemukan linker sedang menulis pesan kesalahan ketika mencoba untuk memanggil cvtres dan gagal.
Ternyata saya memiliki dua versi utilitas ini di jalur saya. Satu di
C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\BIN\cvtres.exe
dan satu diC:\Windows\Microsoft.NET\Framework\v4.0.30319\cvtres.exe
. Setelah VS2012 menginstal, versi cvtres.exe VS2010 tidak akan berfungsi lagi. Jika itu yang pertama di jalur Anda, dan penghubung memutuskan perlu mengonversi file .res ke format objek COFF, tautan akan gagal dengan LNK1123.(Benar-benar menyebalkan bahwa pesan kesalahan tidak ada hubungannya dengan masalah aktual, tetapi itu tidak biasa untuk produk Microsoft.)
Cukup hapus / ganti nama versi utilitas yang lama, atau atur ulang variabel PATH Anda, sehingga versi yang berfungsi lebih dulu.
Ketahuilah bahwa untuk build tool x64 Anda mungkin juga harus memeriksa di
C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\amd64
mana ada tool laincvtres.exe
.sumber
Periksa versi
cvtrs.exe
:Versi yang salah
date
:: 03/18/2010time
: 01:16 PMsize
: 31.048 bytename
: cvtres.exeVersi yang benar
date
:: 02/21/2011time
: 06:03 PMsize
: 31.056 bytename
: cvtres.exeJika Anda memiliki versi yang salah, Anda harus menyalin versi yang benar dari:
dan ganti yang di sini:
yaitu
sumber
Menurut utas ini di forum MSDN: Instalasi VS2012 RC memecah proyek VS2010 C ++ , cukup, ambil
cvtres.exe
dari VS2010 SP1atau dari VS2012
dan menyalinnya selama
cvtres.exe
di VS2010 RTM instalasi (yang tanpa SP1 )Dengan cara ini, Anda akan secara efektif menggunakan versi
cvtres.exe
yang sudah diperbaiki yaitu 11.0.51106.1.Ulangi langkah yang sama untuk alat versi 64-bit
C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\amd64\cvtres.exe
.Solusi ini merupakan alternatif untuk pemasangan SP1 untuk VS2010 - dalam beberapa kasus Anda tidak dapat menginstal SP1 (yaitu jika Anda perlu mendukung build pra-SP1).
sumber
Jika Anda telah menginstal Visual Studio 2012 RC, maka itu menginstal .NET 4.5 RC.
Hapus instalan .NET 4.5 RC, dan instal versi yang Anda butuhkan (4.0 untuk VS 2010). Ini akan menyelesaikan masalah yang Anda alami.
Ini memecahkan masalah yang sama. Tidak perlu menghapus Visual Studio.
sumber
Itu karena .NET Framework 4.5 menggantikan .NET Framework 4.0. Saya menghapus Visual Studio 2010 beberapa kali tanpa hasil. Ketika saya menghapus .NET Framework 4.5 dan menginstal ulang Visual Studio 2010 itu berjalan dengan baik.
Lihat Menghapus Instalasi Visual Studio 11 sepenuhnya untuk melakukan instalasi baru .
sumber
Bagi saya, pengaturan 'Buat Manifes' menjadi 'Tidak' memperbaikinya. (Juga diperbaiki dengan / INCREMENTAL: TIDAK)
sumber
Jika Anda menggunakan x64, berikut ini sumber yang akan membantu :
Ini terjadi karena Microsoft .NET 4.5 tidak kompatibel dengan Visual C ++ 10. Solusinya adalah untuk memastikan bahwa Anda menjalankan .NET versi cvtres.exe daripada versi Visual C ++. Saya melakukan ini dengan mengganti nama versi Visual C ++ dari file-file itu dan menyalin versi .NET di tempatnya.
sumber
.NET Framework 4 Multi-targeting pack
dan.NET Framework 4.5.2
diinstal. File ituC:\windows\Microsoft.NET\Framework\v4.0.30319\cvtres.exe
milik.NET Framework 4 Multi-targeting pack
. Ini umumnya akan terjadi jika Anda telah menginstal Windows SDK 7.1 dan kemudian .NET diperbarui ke 4.5.2. Dalam hal ini, biasanya Anda dapat hanya mengubah namaC:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\cvtres.exe
untukcvtres-old.exe
dan barucvtres.exe
(tanggal 8/30/17) akan digunakan dan bekerja dengan baik.Saya akhirnya memecahkan masalah ini dengan melakukan uninstall penuh VS2012 RC, diikuti dengan uninstall penuh VS2010, kemudian instal ulang dari awal VS2010.
Butuh selamanya, tapi saya sekarang dapat mengkompilasi proyek C ++ di VS2010 lagi.
sumber
Masalah ini secara ajaib diselesaikan untuk saya dengan menghapus .NET 4.5, dan menggantinya dengan .NET 4.0 . Saya kemudian harus memperbaiki Visual Studio 2010 - entah bagaimana rusak.
Saya sebelumnya telah menginstal, dan kemudian tidak diinstal, Visual Studio 2012 - yang mungkin terkait dengan masalah ini.
sumber
Saya belum menginstal Visual Studio 2012, tapi saya masih mendapatkan kesalahan ini di Visual Studio 2010. Saya mendapatkan ini diselesaikan setelah menginstal Visual Studio 2010 SP1.
sumber
Saya memiliki masalah yang sama dengan Microsoft Visual Studio 2010 Ultimate dan diselesaikan dengan metode yang dijelaskan dalam video youtube ini
Video menyarankan untuk mengganti nama file cvtres.exe di C: \ Program Files (x86) \ Microsoft Visual Studio 10.0 \ VC \ bin
(in my Win7X64 matchine)
untuk cvtres-old.exesumber
+1 untuk pengguna Short untuk jawaban yang berfungsi untuk saya!
Saya mencoba melakukan debugging dengan ini
msbuild /v:diag
, dan saya melihat bahwa MSBuild mencoba untuk menanamkan manifes dalam executable, dengan <somename> .dll.embed.manifest.res pada baris perintah linker, di mana itu adalah sumber daya file dibangun dari <somename> .dll.embed.manifest. Tetapi file manifes adalah file teks Unicode kosong. (Yaitu, file dua byte dengan awalan Unicode 0xFEFF)Jadi masalah root tampaknya ada hubungannya dengan file manifes yang tidak dihasilkan, atau sedang digunakan ketika <somename> .dll.intermediate.manifest seharusnya digunakan.
Solusi alternatif tampaknya untuk mematikan opsi "Embed Manifest" di bawah Properties, Manifest Tool, Input dan Output.
sumber
Itu tidak berfungsi untuk saya setelah Mengaktifkan Penautan Tambahan -> "Tidak (/ INCREMENTAL: TIDAK)", tetapi itu berfungsi untuk saya setelah saya menghapus file rc.
sumber
Untuk meringkas:
jika step1 tidak berfungsi, lakukan Step2
jika step2 tidak berfungsi, lakukan Step3 Salin file salah satu dari:
C: \ Program Files (x86) \ Microsoft Visual Studio 13.0 \ VC \ bin \ cvtres.exe
Kemudian, ganti ke C: \ Program Files (x86) \ Microsoft Visual Studio 10.0 \ VC \ bin \ cvtres.exe Dengan saya, lakukan 3 langkah kerjanya
sumber
Pada Januari 2014, untuk beberapa alasan saya menginstal .NET Framework 4.5.1, saya tidak tahu apakah karena instalasi perangkat lunak pihak ketiga atau karena pembaruan otomatis.
Pada tanggal 29 Januari, saya menginstal satu komponen dan saya mulai menerima
pesan. Pada saat itu, saya menyelesaikannya dengan menghindari tautan tambahan.
Pada 31 Januari, saya menginstal komponen lain dari .NET Framework 4.5.1 dan trik tautan tambahan tidak berfungsi lagi. Saya kemudian menginstal Visual Studio 2010 SP1, tetapi setelah itu masalahnya menjadi:
Saya pikir SP1 mengacaukan instalasi Visual Studio 2010 saya.
Jadi saya menghapus .NET Framework 4.5.1, menginstal .NET Framework 4.0 dan menghapus lalu menginstal ulang Visual Studio 2010. Itu bekerja untuk saya.
sumber
Meskipun menginstal Paket Layanan Anda mendapatkan kesalahan kemudian mencoba menghapus / mengganti nama cvtres.exe di C: \ Program Files (x86) \ Microsoft Visual Studio 10.0 \ VC \ bin folder. Ini berhasil bagi saya.
sumber
Saya menyetel Aktifkan Penambahan Bertautan ke "Tidak (/ INCREMENTAL: TIDAK)" dan itu tidak berfungsi untuk saya .
Selanjutnya saya sudah berubah:
dan itu bekerja untuk saya :)
sumber
Menginstal ulang CMake berfungsi untuk saya. Salinan CMake baru menemukan bahwa ia harus menggunakan Visual Studio 11 bukan 10.
sumber
Saya menggunakan Windows SDK untuk pemrograman inti Win32 dan .NET 4.5 diinstal untuk alasan "tidak diketahui". Saya telah menghapus instalan itu dan menginstal 4.0 seperti jawaban sebelumnya dan ya, itu juga berhasil untuk saya.
Hanya terperangah bahwa saya harus menggunakan .NET framework yang tidak berguna untuk membangun aplikasi Win32 menggunakan SDK.
sumber
Saya memecahkan ini dengan melakukan hal berikut:
Dengan demikian masalahnya akan hilang selamanya. Bangun secara acak dan debug proyek C ++ Anda tanpa gangguan.
sumber
Bagi Anda yang mencari solusi untuk masalah ini dengan contoh kode sumber OpenGL SuperBible 6, solusinya adalah membangun dalam Release bukannya Debug . Semua proyek telah menonaktifkan opsi tautan tambahan di versi Rilis .
sumber
Masalah saya adalah bahwa saya memiliki dua jalur di PC yang berisi pustaka yang sama. Kedua jalur ditambahkan ke Direktori Perpustakaan Tambahan di Properti Konfigurasi -> Linker -> Umum . Menghapus salah satu jalur memecahkan masalah.
sumber
Saya memiliki masalah yang sama setelah memperbarui .NET: Saya mencopot kerangka .NET terlebih dahulu, mengunduh studio visual dari visualstudio.com dan memilih "perbaikan".
Kerangka NET dipasang secara otomatis dengan studio visual -> dan sekarang berfungsi dengan baik!
sumber
Saya mencoba beberapa kali dan akhirnya menyelesaikan masalah dengan menghapus beberapa kali VS2010. Saya pikir saya belum menghapus semua file dan itu sebabnya itu tidak berfungsi untuk pertama kalinya.
Dalam instalasi VS2012, dikatakan bahwa jika Anda memiliki VS2010 SP1 Anda tidak dapat bekerja pada proyek yang sama di kedua program. Disarankan hanya memiliki satu program.
Terima kasih!
sumber
Saya punya masalah ini setelah saya menginstal Visual Studio 2017 dan .NET Framework 4.6 pada mesin yang sebelumnya memiliki Visual Studio 2010.
Masalahnya adalah setelah instalasi seperti itu, file msvcr100_clr0400.dll dari C: \ Windows \ System32 ditimpa dengan yang baru dengan ukuran yang sangat kecil ~ 19 Kb, namun yang sebelumnya ~ 800 Kb.
Setelah saya memulihkan file secara manual dari cvtres.exe mesin build lain mulai bekerja dengan baik lagi.
sumber