เหตุใดข้อผิดพลาดร้ายแรง“ LNK1104: ไม่สามารถเปิดไฟล์ 'C: \ Program.obj'” เกิดขึ้นเมื่อฉันรวบรวมโปรเจ็กต์ C ++ ใน Visual Studio


117

ฉันได้สร้างโปรเจ็กต์ C ++ ใหม่ใน Visual Studio 2008 ยังไม่มีการเขียนโค้ด มีการเปลี่ยนแปลงการตั้งค่าโปรเจ็กต์เท่านั้น

เมื่อฉันรวบรวมโครงการฉันได้รับข้อผิดพลาดร้ายแรงต่อไปนี้:

ข้อผิดพลาดร้ายแรง LNK1104: ไม่สามารถเปิดไฟล์ 'C: \ Program.obj'

คำตอบ:


153

ปัญหานี้เกิดจากการระบุการพึ่งพาไฟล์ lib ที่มีช่องว่างในเส้นทาง เส้นทางต้องล้อมรอบด้วยเครื่องหมายคำพูดเพื่อให้โครงการรวบรวมได้อย่างถูกต้อง

ในการกำหนดค่า Properties -> Linker -> การป้อนข้อมูลแท็บของคุณสมบัติของโครงการที่มีการอ้างอิงเพิ่มเติมคุณสมบัติ ปัญหานี้ได้รับการแก้ไขโดยการเปลี่ยนคุณสมบัตินี้จาก:

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

ถึง:

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

ที่ฉันเพิ่มคำพูด


17
พระเจ้าคุณเพิ่งแขวนคอสองวันไล่แมลงไป 30 วินาที :)
jb.

10
ผมมีปัญหาเหมือนกัน. หาก Linker ของคุณถูกต้อง แต่ไดเร็กทอรี lib ของคุณตั้งค่าไม่ถูกต้องอาจเกิดข้อผิดพลาดเดียวกัน ลองค้นหาในConfiguration Properties -> VC ++ directory -> Library Directoriesเพื่อดูว่าคุณตั้งค่าไลบรารีถูกต้องหรือไม่ บางครั้งโฟลเดอร์ lib ประกอบด้วย x86 และโฟลเดอร์ x64 คุณต้องตั้งค่าเป็นหนึ่งในนั้น (ขึ้นอยู่กับคอมไพเลอร์ของคุณ) แทนที่จะเป็นโฟลเดอร์ที่มีทั้งสองอย่าง
M4st3rM1

1
"C:\Program Files\sofware sdk\lib\library.lib"อย่าลืมที่จะใส่อัฒภาคหลังจาก การไม่มี;พินัยกรรมยังทำให้โครงการคอมไพล์ไม่ถูกต้อง
roscioli

1
มีปัญหานี้ขณะพยายามสร้าง OpenCV โดยใช้ Visual Studio 2005 (บน Windows 8.1) ... และแก้ไขได้ ที่ดี!
AlainD

1
ฉันลองแล้วมันไม่ได้ผลกับฉัน "Qt5Xmld.lib"; "Qt5XmlPatternsd.lib"; "Qt5Cored.lib";% (AdditionalDependencies) - ฉันควรแก้ไขอะไร
STF

65

กรณีนี้อาจเกิดขึ้นได้หากไฟล์ยังคงทำงานอยู่เช่นกัน

: -1: ข้อผิดพลาด: LNK1104: ไม่สามารถเปิดไฟล์ 'debug \ ****. exe'


4
นี่ก็เป็นปัญหาของฉันเหมือนกัน!
Kamran Bigdely

1
ฉันได้รับสิ่งนี้เกิดจาก MS Security Essentials ทำให้ไฟล์ถูกล็อก
Synetech

ใช่ปิดหน้าต่างคอนโซลก่อนหน้าและทันใดนั้นก็สามารถอ่าน lib ได้
Kari

15

ปัญหาหายไปสำหรับฉันหลังจากปิดและเปิด Visual Studio อีกครั้ง ไม่แน่ใจว่าทำไมปัญหาจึงเกิดขึ้น แต่นั่นอาจคุ้มค่าที่จะยิง

นี่คือบน VS 2013 Ultimate, Windows 8.1


4
อา Microsoft ... การพยายามครั้งแรกของเราควรปิดและเปิดใหม่เสมอ (หรือปิดและเปิด) - ข้อบกพร่องลึกลับหลายอย่างหายไปเมื่อเราทำเช่นนั้น ...
Leonardo Alves Machado

1
ฉันรู้สึกอับอายมากที่วิธีนี้สามารถแก้ปัญหาของฉันได้ ตอนนี้ฉันไม่สามารถออกไปข้างนอกเพื่อพบปะเพื่อนฝูงและครอบครัวได้อีกแล้ว
javaLover

2
คุณมีปัญหาเดียวกับแครอล
amod

10

ตรวจสอบด้วยว่าคุณไม่ได้เปิดสิ่งนี้ไว้: คุณสมบัติการกำหนดค่า -> C / C ++ -> ตัวประมวลผลล่วงหน้า-> ประมวลผลล่วงหน้าไปยังไฟล์


ในกรณีของฉันมันก็เป็นปัญหาเช่นกัน แต่ฉันควรทำอย่างไรหากต้องการเปิดแฟล็กนี้ (เพื่อดูไฟล์ Prepossessed)
Guy Avraham

2
คุณมีวิธีการแก้ปัญหาบางอย่างที่นี่: วิธีการส่งออกรหัส preprocessed และรวบรวมมัน (Visual Studio)และนี่: รวบรวมโครงการ (VS 2008) ที่มีการโต้แย้ง / p (การ preprocess ไปยังแฟ้ม) ไม่ได้รวบรวม แต่โดยพื้นฐานแล้วมันเป็นตัวเลือกคอมไพเลอร์ดังนั้นจึงจะทำอย่างใดอย่างหนึ่ง แต่ไม่ใช่ทั้งสองอย่าง
Assaf Levy

4

ฉันมีปัญหาเดียวกันมันเกิดจาก "," ในชื่อของโฟลเดอร์ของเส้นทางไลบรารีเพิ่มเติมแก้ไขได้โดยเปลี่ยนเส้นทางไลบรารีเพิ่มเติม


4

ปัญหาของฉันหายไปเป็น.libส่วนขยายของผมก็แค่การเชื่อมโยงกับmylibและ VS mylib.objตัดสินใจที่จะมองหา


3

ในกรณีของฉันมันเป็นเรื่องของการอ้างอิงที่ผิดพลาด โปรเจ็กต์อ้างอิงผลลัพธ์ของโปรเจ็กต์อื่น แต่โปรเจ็กต์หลังไม่เอาต์พุตไฟล์ที่อดีตกำลังมองหา


3

โซลูชันที่ 1 (สำหรับกรณีของฉัน): รีสตาร์ทกระบวนการ windows Explorer (ใช่ตัวจัดการไฟล์ windows)

แนวทางที่ 2:

  1. ปิด Visual Studio Windows Logoff
  2. เข้าสู่ระบบเปิด Visual Studio อีกครั้ง
  3. สร้างตามปกติ ตอนนี้สร้างและเข้าถึงไฟล์ที่มีปัญหาได้แล้ว

ฉันคิดว่าบางครั้งระบบไฟล์หรือใครก็ตามที่ควบคุมมันจะสูญหายไปด้วยสิทธิ์ของมัน ก่อนที่จะรีสตาร์ทเซสชัน windows พยายามที่จะฆ่าmsbuild32.exeกระบวนการซอมบี้รีสตาร์ท Visual Studio ตรวจสอบว่าไม่มีการแสดงไฟล์ปัญหา ไม่มีปัญหาการกำหนดค่าการสร้าง มันเกิดขึ้นแล้ว สิ่งภายในบางอย่างใน Windows ไม่สามารถแก้ไขได้จำเป็นต้องรีสตาร์ท


ฉันมีปัญหากับ VS2019 ... สิ่งนี้แก้ไขได้ ... น่าทึ่งที่ข้อบกพร่องยังคงมีอยู่ thx
JHBonarius

2

ฉันมีข้อผิดพลาดเดียวกันกับแพ็คเกจ Nuget ที่ฉันติดตั้งไว้ (อันที่ไม่ใช่ส่วนหัวเท่านั้น) จากนั้นพยายามถอนการติดตั้ง
สิ่งที่ผิดพลาดสำหรับฉันคือฉันยังคงรวมส่วนหัวของแพ็คเกจที่ฉันเพิ่งถอนการติดตั้งในไฟล์. cpp ของฉัน (ค่อนข้างโง่ใช่)
ฉันได้ลบลิงก์ไดเร็กทอรีไลบรารีเพิ่มเติมออกไปProject -> Properties -> Linker -> Generalด้วย แต่แน่นอนว่าไม่มีประโยชน์เนื่องจากฉันยังคงพยายามอ้างอิงส่วนหัวที่ไม่มีอยู่จริง

ข้อความแสดงข้อผิดพลาดที่ทำให้สับสนอย่างแน่นอนในกรณีนี้เนื่องจากชื่อส่วนหัวเป็น<boost/filesystem.hpp>แต่ข้อผิดพลาดทำให้ฉัน"cannot open file 'llibboost_filesystem-vc140-mt-gd-1_59.lib'"ไม่มีหมายเลขบรรทัดหรืออะไรเลย


2

ฉันมีปัญหาเดียวกัน แต่วิธีแก้ปัญหาสำหรับกรณีของฉันไม่มีอยู่ในคำตอบ โปรแกรมป้องกันไวรัส (AVG) ของฉันระบุว่าไฟล์MyProg.exeเป็นไวรัสและใส่ลงใน 'คลังเก็บไวรัส' คุณต้องตรวจสอบคลังเก็บนี้และถ้าไฟล์อยู่ที่นั่น - จากนั้นกู้คืน มันช่วยฉันได้


1

สำหรับโปรเจ็กต์แอสเซมบลี (ProjectName -> Build Dependencies -> Build Customizations -> masm (เลือก)) การตั้งค่าGenerate Preprocessed Source Listing to Trueทำให้เกิดปัญหากับฉันเช่นกันการล้างการตั้งค่าได้รับการแก้ไข VS2013 ได้ที่นี่.


1

ฉันพบปัญหาเดียวกันกับตัวเชื่อมโยงที่บ่นเกี่ยวกับปฏิบัติการหลักที่หายไป สิ่งนี้เกิดขึ้นระหว่างพอร์ตโซลูชันของเราไปยังVisual Studio 2013ใหม่ โซลูชันนี้เป็นการผสมผสานระหว่างโครงการ / รหัสที่มีการจัดการและไม่มีการจัดการ ปัญหา (และแก้ไข) จบลงด้วยการเป็นไฟล์app.config ที่หายไปในโฟลเดอร์โซลูชัน ใช้เวลาหนึ่งวันในการคิดออก :( เนื่องจากบันทึกผลลัพธ์ไม่เป็นประโยชน์มากนัก


1

ฉันจะตรวจสอบการตั้งค่าของฉันทั้งหมดตามรายการนี้: http://msdn.microsoft.com/en-us/library/ts7eyw4s.aspx#feedback มันเป็นประโยชน์สำหรับฉันและสำหรับสถานการณ์ของฉันฉันพบว่าคุณสมบัติของโครงการของ Link Dependency มี double-quote ซึ่งไม่ควรมี


0

ฉันกำลังตอบรับเพราะฉันไม่เห็นโซลูชันเฉพาะนี้แสดงโดยคนอื่น

เห็นได้ชัดว่าโปรแกรมป้องกันไวรัส (Ad-Aware) ของฉันตั้งค่าสถานะ DLL หนึ่งในโครงการของฉันขึ้นอยู่กับและการลบออก แม้ว่าจะไม่รวมไดเร็กทอรีที่ DLL อาศัยอยู่ แต่พฤติกรรมเดิมก็ยังคงดำเนินต่อไปจนกว่าฉันจะรีสตาร์ทคอมพิวเตอร์


0

ในกรณีของฉันฉันได้แทนที่ไฟล์ไลบรารีคณิตศาสตร์จากหลักสูตร Game Engine Graphics ก่อนหน้าด้วย GLM ปัญหาคือฉันไม่ได้เพิ่มลงในโครงการภายใน Solution Explorer ของ Visual Studio (แม้ว่าจะอยู่ในที่เก็บโครงการก็ตาม)


0

ฉันมีปัญหานี้ร่วมกับข้อผิดพลาด LNK2038 ติดตามโพสต์นี้เพื่อแยกการเปิดตัวและการแก้ปัญหา DLL ในกระบวนการนี้ฉันได้ล้างโฟลเดอร์ทั้งหมดที่มีการอ้างอิงเหล่านี้อยู่

โชคดีที่ฉันมีข้อมูลสำรองของไฟล์เหล่านี้ทั้งหมดและได้รับไฟล์ที่มีข้อผิดพลาดนี้ถูกส่งกลับไปที่โฟลเดอร์ DEBUG เพื่อแก้ไขปัญหา รหัสข้อผิดพลาดทำให้เข้าใจผิดไม่ทางใดก็ทางหนึ่งเนื่องจากฉันต้องใช้เวลานานมากเพื่อมาที่เคล็ดลับนี้จากหนึ่งในคำตอบจากโพสต์นี้อีกครั้ง

หวังว่าคำตอบนี้จะช่วยคนที่ต้องการความช่วยเหลือ



0

ฉันมีข้อผิดพลาดเดียวกัน:

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

นี้เกิดจาก;ในตอนท้าย หากคุณมีไลบรารีหลายไลบรารีควรคั่นด้วยพื้นที่ว่าง (สเปซบาร์) ไม่มีจุลภาคหรือกึ่งโคลอน!

ดังนั้นอย่าใช้;หรือสิ่งอื่นใดเมื่อแสดงรายการห้องสมุดในรูปแบบProject properties >> Configuration Properties >> Linker >> Input


0

ฉันลองวิธีแก้ปัญหาข้างต้น แต่ไม่ได้ผลสำหรับฉัน ดังนั้นฉันจึงเปลี่ยนชื่อ exe และสร้างโซลูชันใหม่ มันใช้ได้กับฉัน


0

ฉันมีข้อผิดพลาดที่แน่นอนนี้เมื่อสร้าง VC ++ DLL ใน Visual Studio 2019:

LNK1104: ไม่สามารถเปิดไฟล์ 'C: \ Program.obj'

ปรากฎภายใต้คุณสมบัติโครงการ> ตัวเชื่อมโยง> อินพุต> ไฟล์นิยามโมดูลฉันได้ระบุไฟล์ def ที่มีเครื่องหมายอัญประกาศคู่ที่ไม่ตรงกันที่ท้ายชื่อไฟล์ การลบเครื่องหมายคำพูดคู่ที่ไม่ตรงกันช่วยแก้ปัญหานี้ได้



-1

ฉันประสบปัญหาเดียวกันกับ "Visual Studio 2013"

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

ได้รับการแก้ไขหลังจากปิดและเริ่ม Visual Studio ใหม่


-3

ฉันมีปัญหาเดียวกันฉันเพิ่งคัดลอกรหัสไปยังโครงการใหม่และเริ่มสร้าง เกิดข้อผิดพลาดอื่น ๆ ข้อผิดพลาด C4996: 'fopen': ฟังก์ชันหรือตัวแปรนี้อาจไม่ปลอดภัย ลองใช้ fopen_s แทน

เพื่อแก้ปัญหานี้อีกครั้งฉันได้เพิ่มคุณสมบัติของฉันหนึ่งรายการในโปรเจ็กต์ Project ดังต่อไปนี้ โครงการ -> คุณสมบัติ -> คุณสมบัติการกำหนดค่า -> c / c ++ ในหมวดหมู่นี้มีชื่อฟิลด์ Preprocessor Definitions ฉันได้เพิ่ม _CRT_SECURE_NO_WARNINGS สิ่งนี้เพื่อแก้ปัญหาหวังว่ามันจะช่วยได้ ...

ขอบคุณ


คำตอบนี้ไม่มีความเกี่ยวข้องกับโพสต์ต้นฉบับ
zar

ไม่ต้องพูดถึงการปิดใช้งานคุณสมบัติความปลอดภัยไม่ใช่ความคิดที่ดีอย่างแน่นอน
Matti Virkkunen
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.