Mengapa kesalahan fatal "LNK1104: tidak dapat membuka berkas 'C: \ Program.obj'" terjadi ketika saya menyusun proyek C ++ di Visual Studio?

117

Saya telah membuat proyek C ++ baru dalam Visual Studio 2008. Belum ada kode yang ditulis; Hanya pengaturan proyek yang telah diubah.

Ketika saya menyusun proyek, saya menerima galat fatal berikut ini:

kesalahan fatal LNK1104: tidak dapat membuka file 'C: \ Program.obj'

Josh Sklare
sumber

Jawaban:

153

Masalah khusus ini disebabkan oleh menentukan ketergantungan ke file lib yang memiliki spasi di jalurnya. Jalur harus diapit oleh tanda kutip agar proyek dapat dikompilasi dengan benar.

Pada Properti Konfigurasi -> Linker -> tab Input dari properti proyek, ada properti Ketergantungan Tambahan . Masalah ini telah diperbaiki dengan mengubah properti ini dari:

C: \ Program Files \ sofware sdk \ lib \ library.lib

Untuk:

"C: \ Program Files \ sofware sdk \ lib \ library.lib"

Di mana saya menambahkan kutipan.

Josh Sklare
sumber
17
Tuhan, Anda baru saja menggantung pengejaran bug dua hari menjadi 30 detik :)
jb.
10
Saya memiliki masalah yang sama. Jika Linker Anda benar tetapi direktori lib Anda tidak disetel dengan benar, kesalahan yang sama mungkin muncul. Coba cari di Properti Konfigurasi -> direktori VC ++ -> Direktori Perpustakaan untuk melihat apakah Anda mengatur perpustakaan dengan benar. Terkadang folder lib terdiri dari folder x86 dan x64. Anda harus mengaturnya ke salah satu dari itu (tergantung pada kompiler Anda) daripada folder yang berisi keduanya.
M4st3rM1nd
1
Jangan lupa untuk menambahkan titik koma setelahnya "C:\Program Files\sofware sdk\lib\library.lib". Tidak adanya a ;juga akan menyebabkan proyek tidak terkompilasi dengan benar.
roscioli
1
Mengalami masalah ini saat mencoba membangun OpenCV menggunakan Visual Studio 2005 (di Windows 8.1) ... dan itu menyelesaikannya. Bagus!
AlainD
1
Saya mencobanya dan tidak berhasil bagi saya. "Qt5Xmld.lib"; "Qt5XmlPatternsd.lib"; "Qt5Cored.lib";% (AdditionalDependencies) -Apa yang harus saya ubah?
STF
65

Ini bisa terjadi jika file masih berjalan juga.

: -1: error: LNK1104: tidak dapat membuka file 'debug \ ****. Exe'

Carol
sumber
4
ini juga masalahku!
Kamran Bigdely
1
Saya mendapatkan ini disebabkan oleh MS Security Essentials menjaga file tetap terkunci.
Synetech
ya, tutup jendela konsol sebelumnya dan tiba-tiba lib bisa dibaca.
Kari
15

Masalahnya hilang bagi saya setelah menutup dan membuka kembali Visual Studio. Tidak yakin mengapa masalah tersebut terjadi, tetapi itu mungkin layak dicoba.

Ini ada di VS 2013 Ultimate, Windows 8.1.

Daniel Neel
sumber
4
ah, Microsoft ... Percobaan pertama kita harus selalu ditutup dan dibuka kembali (atau matikan dan hidupkan) - beberapa bug misterius hilang saat kita melakukannya ...
Leonardo Alves Machado
1
Saya merasa sangat malu karena solusi ini dapat menyelesaikan masalah saya. Sekarang, saya tidak bisa pergi keluar untuk bertemu teman dan keluarga saya lagi.
javaLover
2
Anda memiliki masalah yang sama dengan Carol.
amod
10

Periksa juga apakah Anda tidak mengaktifkannya: Konfigurasi Properties -> C / C ++ -> Preprocessor -> Preprocess to a File .

Retribusi Assaf
sumber
Dalam kasus saya itu juga masalahnya, namun, apa yang harus saya lakukan jika saya benar-benar ingin mengaktifkan bendera ini (untuk melihat file Prepossessed)?
Guy Avraham
2
Anda punya beberapa solusi di sini: Cara mengeluarkan kode praproses DAN mengkompilasinya (Visual Studio) dan di sini: Mengompilasi proyek (VS 2008) dengan argumen / p (preprocess ke file) tidak dapat dikompilasi . Tetapi pada dasarnya ini adalah opsi kompilator sehingga akan melakukan salah satu dari keduanya, tetapi tidak keduanya.
Retribusi Assaf
4

Saya memiliki masalah yang sama, hal itu disebabkan oleh "," di nama folder jalur perpustakaan tambahan. Ini diselesaikan dengan mengubah jalur perpustakaan tambahan.

harsini
sumber
4

Masalah saya adalah .libekstensi yang hilang , saya baru saja menautkan mylibdan VS memutuskan untuk mencari mylib.obj.

Patrizio Bertoni
sumber
3

Dalam kasus saya, ini adalah masalah referensi yang salah arah. Proyek mereferensikan keluaran dari proyek lain tetapi yang terakhir tidak mengeluarkan berkas di tempat yang dicari sebelumnya.

Newtopian
sumber
3

Solusi 1 (untuk kasus saya): Mulai ulang proses Windows Explorer (ya, pengelola file windows).

Solusi 2:

  1. Tutup Visual Studio. Logoff Windows
  2. Logon, buka kembali Visual Studio
  3. Bangun seperti biasa. Sekarang dibangun dan dapat mengakses file yang bermasalah.

Saya kira terkadang sistem file atau siapa pun yang mengendalikannya hilang dengan izinnya. Sebelum memulai kembali sesi windows, coba bunuh msbuild32.exeproses zombie , mulai ulang studio visual, centang tidak ada bahkan yang menampilkan file masalah di. Tidak ada masalah konfigurasi build. Itu terjadi sekarang dan nanti. Beberapa hal internal di Windows tidak diperbaiki, perlu dimulai ulang.

Lissandro
sumber
Saya punya masalah ini dengan VS2019 ... ini memperbaikinya ... menakjubkan bahwa bug tetap ada. thx
JHBonarius
2

Saya mengalami kesalahan yang sama, hanya dengan paket Nuget yang telah saya instal (yang bukan hanya header) dan kemudian mencoba untuk menghapusnya.
Apa yang salah bagi saya adalah bahwa saya masih menyertakan header untuk paket yang baru saja saya copot di salah satu file .cpp saya (cukup konyol, ya).
Saya bahkan menghapus tautan direktori perpustakaan tambahan ke dalamnya Project -> Properties -> Linker -> General, tetapi tentu saja tidak berhasil karena saya masih mencoba merujuk tajuk yang tidak ada.

Jelas pesan kesalahan yang membingungkan dalam kasus ini, karena nama header adalah <boost/filesystem.hpp>tetapi kesalahan memberi saya "cannot open file 'llibboost_filesystem-vc140-mt-gd-1_59.lib'"dan tidak ada nomor baris atau apa pun.

Matthias
sumber
2

Saya memiliki masalah yang sama, tetapi solusi untuk kasus saya tidak tercantum dalam jawaban. Program antivirus saya (AVG) menentukan file MyProg.exesebagai virus dan memasukkannya ke 'gudang virus'. Anda perlu memeriksa gudang ini dan jika file ada di sana - maka pulihkan saja. Itu membantu saya.

Nazarii Plebanskii
sumber
1

Untuk proyek perakitan (ProjectName -> Build Dependencies -> Build Customizations -> masm (dipilih)), pengaturan Generate Preprocessed Source Listing ke True juga menyebabkan masalah bagi saya, menghapus pengaturan tersebut memperbaikinya. VS2013 di sini.

MadeOfAir
sumber
1

Saya mengalami masalah yang sama dengan linker yang mengeluh tentang executable utama yang hilang. Ini terjadi selama port solusi kami ke Visual Studio 2013 baru . Solusinya adalah campuran bervariasi dari proyek / kode yang dikelola dan tidak dikelola. Masalah (dan perbaikan) akhirnya menjadi file app.config yang hilang di folder solusi. Butuh satu hari untuk memikirkan yang satu ini :(, karena log keluaran tidak terlalu membantu.

Nicko Po
sumber
0

Saya menjawab karena saya tidak melihat solusi khusus ini dicantumkan oleh orang lain.

Rupanya antivirus saya (Ad-Aware) menandai DLL yang menjadi tempat bergantung salah satu proyek saya, dan menghapusnya. Bahkan setelah mengecualikan direktori tempat tinggal DLL, perilaku yang sama berlanjut hingga saya me-restart komputer saya.

easuter
sumber
0

Dalam kasus saya, saya telah mengganti file perpustakaan matematika dari kursus Grafik Game Engine sebelumnya dengan GLM. Masalahnya adalah saya tidak menambahkannya ke proyek dalam Visual Studio's Solution Explorer (meskipun mereka berada di repositori proyek).

Artorias 2718
sumber
0

Saya mengalami masalah ini sehubungan dengan kesalahan LNK2038, mengikuti posting ini untuk memisahkan RELEASE dan DEBUG DLL. Dalam proses ini saya telah membersihkan seluruh folder tempat dependensi ini berada.

Untungnya saya memiliki cadangan dari semua file ini, dan mendapatkan file yang kesalahan ini dilemparkan kembali ke folder DEBUG untuk menyelesaikan masalah. Kode kesalahan itu menyesatkan karena saya harus menghabiskan banyak waktu untuk sampai ke tip ini dari salah satu jawaban dari posting ini lagi.

Semoga jawaban ini, membantu seseorang yang membutuhkan.

N00b Pr0grammer
sumber
0

Aku dipecahkan dengan menambahkan sebuah proyek yang sudah ada untuk saya solusi , yang saya lupa untuk menambahkan dalam waktu yang pertama.

Markus Weber
sumber
0

Saya mengalami kesalahan yang sama:

fatal error LNK1104: cannot open file 'GTest.lib;'

Ini disebabkan oleh ;akhirnya. Jika Anda memiliki beberapa perpustakaan, mereka harus dipisahkan dengan spasi kosong (bilah spasi), tanpa koma atau titik koma!

Jadi jangan gunakan ;atau apa pun saat mencantumkan pustaka diProject properties >> Configuration Properties >> Linker >> Input

zar
sumber
0

Saya mencoba solusi di atas tetapi tidak berhasil untuk saya. Jadi saya mengganti nama exe dan membangun kembali solusinya. Ini bekerja untuk saya.

pengguna3500315
sumber
0

Saya mengalami kesalahan persis ini saat membuat VC ++ DLL di Visual Studio 2019:

LNK1104: tidak dapat membuka file 'C: \ Program.obj'

Ternyata di bawah Project Properties> Linker> Input> Module Definition File, saya telah menentukan file def yang memiliki tanda kutip ganda tak tertandingi di akhir nama file. Menghapus tanda kutip ganda yang tidak cocok menyelesaikan masalah.

MikeOnline
sumber
0

Dibunuh msbuild32.exedan dibangun kembali. Itu berhasil untuk saya.

Aku marah
sumber
-1

Saya mengalami masalah yang sama dengan "Visual Studio 2013".

LNK1104: cannot open file 'debug\****.exe

Ini diselesaikan setelah menutup dan memulai kembali Visual studio.

pengguna3860869
sumber
-3

Saya mengalami masalah yang sama, saya baru saja menyalin kode ke proyek baru dan memulai pembuatan. Beberapa kesalahan lain mulai datang. error C4996: 'fopen': Fungsi atau variabel ini mungkin tidak aman. Pertimbangkan untuk menggunakan fopen_s sebagai gantinya

Untuk mengatasi masalah ini lagi, saya telah menambahkan satu properti saya di proyek Proyek seperti di bawah ini. Proyek -> Properti -> Properti konfigurasi -> c / c ++. Di kategori ini ada nama field Definisi Preprocessor Saya telah menambahkan _CRT_SECURE_NO_WARNINGS ini untuk menyelesaikan masalah Semoga bisa membantu ...

Terima kasih

Sunil
sumber
Jawaban ini tidak ada hubungannya dengan tulisan orisinal.
zar
Belum lagi menonaktifkan fitur keamanan bukanlah ide yang bagus
Matti Virkkunen