Tại sao lỗi nghiêm trọng “LNK1104: không thể mở tệp 'C: \ Program.obj'” xảy ra khi tôi biên dịch dự án C ++ trong Visual Studio?


117

Tôi đã tạo một dự án C ++ mới trong Visual Studio 2008. Chưa có mã nào được viết; Chỉ cài đặt dự án đã được thay đổi.

Khi tôi biên dịch dự án, tôi nhận được lỗi nghiêm trọng sau:

lỗi nghiêm trọng LNK1104: không thể mở tệp 'C: \ Program.obj'

Câu trả lời:


153

Sự cố cụ thể này là do chỉ định phụ thuộc vào tệp lib có khoảng trắng trong đường dẫn của nó. Đường dẫn cần được bao quanh bởi dấu ngoặc kép để dự án biên dịch chính xác.

Trên tab Thuộc tính cấu hình -> Trình liên kết -> Đầu vào của thuộc tính của dự án, có thuộc tính Phụ thuộc bổ sung . Sự cố này đã được khắc phục bằng cách thay đổi thuộc tính này từ:

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

Đến:

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

Nơi tôi đã thêm các dấu ngoặc kép.


17
Chúa ơi, bạn vừa treo cuộc rượt đuổi lỗi hai ngày thành 30 giây một :)
jb.

10
Tôi đã từng gặp vấn đề tương tự. Nếu Trình liên kết của bạn đúng nhưng thư mục lib của bạn được đặt không chính xác, lỗi tương tự có thể xuất hiện. Hãy thử tìm trong Thuộc tính cấu hình -> Thư mục VC ++ -> Thư mục Thư viện để xem bạn có đặt thư viện chính xác hay không. Đôi khi thư mục lib bao gồm một thư mục x86 và x64. Bạn phải đặt nó thành một trong những cái đó (tùy thuộc vào trình biên dịch của bạn) thay vì thư mục chứa cả hai.
M4st3rM1

1
Đừng quên đặt dấu chấm phẩy sau "C:\Program Files\sofware sdk\lib\library.lib". Việc không có ;di chúc cũng khiến dự án biên dịch không chính xác.
roscioli

1
Gặp sự cố này khi cố gắng tạo OpenCV bằng Visual Studio 2005 (trên Windows 8.1) ... và nó đã giải quyết được. Tuyệt quá!
AlainD

1
Tôi đã thử nó và nó không hiệu quả với tôi. "Qt5Xmld.lib"; "Qt5XmlPatternsd.lib"; "Qt5Cored.lib";% (Các phụ thuộc bổ sung) -Tôi nên theo dõi điều gì?
STF

65

Điều này có thể xảy ra nếu tệp vẫn đang chạy.

: -1: error: LNK1104: không thể mở tệp 'debug \ ****. Exe'


4
đây cũng là vấn đề của tôi!
Kamran Bigdely

1
Tôi gặp sự cố này do MS Security Essentials giữ tệp bị khóa.
Synetech

vâng, đóng cửa sổ giao diện điều khiển trước đó và đột nhiên có thể đọc được lib.
Kari

15

Sự cố đã biến mất đối với tôi sau khi đóng và mở lại Visual Studio. Không chắc tại sao sự cố lại xảy ra, nhưng điều đó có thể đáng để thử.

Điều này đã có trên VS 2013 Ultimate, Windows 8.1.


4
ah, Microsoft ... thử đầu tiên của chúng tôi nên luôn luôn đóng và mở lại (hoặc tắt nguồn và trên) - một vài lỗi bí ẩn biến mất khi chúng ta làm điều đó ...
Leonardo Alves Machado

1
Tôi cảm thấy rất xấu hổ khi giải pháp này có thể giải quyết được vấn đề của tôi. Bây giờ, tôi không thể ra ngoài để gặp gỡ bạn bè và gia đình nữa.
javaL qua

2
Bạn đã gặp vấn đề tương tự như Carol.
amod

10

Ngoài ra, hãy kiểm tra để đảm bảo rằng bạn chưa bật tính năng này: Thuộc tính cấu hình -> C / C ++ -> Bộ xử lý trước -> Tiền xử lý tệp .


Trong trường hợp của tôi, đó cũng là vấn đề, nhưng tôi nên làm gì nếu tôi muốn bật cờ này (để xem tệp Đánh giá trước)?
Guy Avraham

2
Bạn có một số giải pháp thay thế ở đây: Cách xuất mã tiền xử lý VÀ biên dịch nó (Visual Studio) và đây: Biên dịch dự án (VS 2008) với đối số / p (tiền xử lý thành tệp) không biên dịch . Nhưng về cơ bản, nó là một tùy chọn trình biên dịch nên nó sẽ làm được một trong hai nhưng không làm được cả hai.
Assaf Levy

4

Tôi cũng gặp phải vấn đề tương tự, do dấu "," trong tên thư mục của đường dẫn thư viện bổ sung. Nó được giải quyết bằng cách thay đổi đường dẫn thư viện bổ sung.


4

Vấn đề của tôi là thiếu một .libtiện ích mở rộng, tôi chỉ đang liên kết chống lại mylibvà VS quyết định tìm kiếm mylib.obj.


3

Trong trường hợp của tôi, đó là một vấn đề của một tham chiếu sai hướng. Dự án đã tham chiếu đầu ra của một dự án khác nhưng dự án sau không xuất ra tệp mà dự án trước đó đang tìm kiếm.


3

Giải pháp 1 (đối với trường hợp của tôi): khởi động lại quá trình windows Explorer (có, trình quản lý tệp windows).

Giải pháp 2:

  1. Đóng Visual Studio. Windows Logoff
  2. Đăng nhập, mở lại Visual Studio
  3. Xây dựng như bình thường. Nó hiện đã xây dựng và có thể truy cập tệp có vấn đề.

Tôi đoán rằng đôi khi hệ thống tệp hoặc bất kỳ ai đang kiểm soát nó bị mất quyền của nó. Trước khi khởi động lại phiên windows, hãy cố gắng diệt msbuild32.execác tiến trình zombie , khởi động lại visual studio, kiểm tra không có kể cả hiển thị tệp sự cố trên. Không có vấn đề cấu hình bản dựng. Nó xảy ra ngay bây giờ và sau đó. Một số thứ bên trong Windows không khắc phục được, cần khởi động lại.


Tôi đã gặp sự cố này với VS2019 ... điều này đã khắc phục được nó ... tuyệt vời là lỗi vẫn tồn tại. thx
JHBonarius

2

Tôi đã gặp lỗi tương tự, chỉ với một gói Nuget mà tôi đã cài đặt (một gói không phải chỉ có tiêu đề) và sau đó cố gỡ cài đặt.
Điều sai đối với tôi là tôi vẫn đang bao gồm tiêu đề cho gói mà tôi vừa gỡ cài đặt trong một trong các tệp .cpp của mình (khá ngớ ngẩn, vâng).
Tôi thậm chí đã xóa liên kết thư mục thư viện bổ sung đến nó trongProject -> Properties -> Linker -> General , nhưng tất nhiên là vô ích vì tôi vẫn đang cố gắng tham chiếu đến tiêu đề không tồn tại.

Chắc chắn là một thông báo lỗi khó hiểu trong trường hợp này, vì tên tiêu đề là <boost/filesystem.hpp>nhưng lỗi đã cho tôi "cannot open file 'llibboost_filesystem-vc140-mt-gd-1_59.lib'"và không có số dòng hoặc bất cứ điều gì.


2

Tôi đã gặp vấn đề tương tự, nhưng giải pháp cho trường hợp của tôi không được liệt kê trong câu trả lời. Chương trình chống vi-rút của tôi (AVG) đã xác định tệp MyProg.exelà vi-rút và đưa tệp đó vào 'kho vi-rút'. Bạn cần phải kiểm tra kho lưu trữ này và nếu tệp ở đó - thì chỉ cần khôi phục nó. Nó đã giúp tôi ra ngoài.


1

Đối với một dự án lắp ráp (ProjectName -> Build Dependencies -> Build Customizations -> masm (đã chọn)), việc đặt Tạo danh sách nguồn được xử lý trước thành True cũng gây ra sự cố cho tôi, việc xóa cài đặt đã khắc phục sự cố. VS2013 tại đây.


1

Tôi gặp phải vấn đề tương tự với trình liên kết phàn nàn về việc thiếu tệp thực thi chính. Điều này đã xảy ra trong quá trình chuyển giải pháp của chúng tôi sang Visual Studio 2013 mới . Giải pháp là sự kết hợp đa dạng giữa các dự án / mã được quản lý và không được quản lý. Sự cố (và cách khắc phục) cuối cùng là thiếu tệp app.config trong thư mục giải pháp. Mất một ngày để tìm ra điều này :(, vì nhật ký đầu ra không hữu ích lắm.


1

Tôi đã kiểm tra tất cả các cài đặt của mình theo danh sách này: http://msdn.microsoft.com/en-us/library/ts7eyw4s.aspx#feedback . Điều đó rất hữu ích đối với tôi và đối với tình huống của tôi, tôi phát hiện ra rằng Sự phụ thuộc liên kết của các thuộc tính của dự án có dấu ngoặc kép, điều này không nên có.


0

Tôi đang trả lời vì tôi không thấy giải pháp cụ thể này được liệt kê bởi bất kỳ ai khác.

Rõ ràng phần mềm chống vi-rút (Ad-Aware) của tôi đã gắn cờ một DLL mà một trong những dự án của tôi phụ thuộc vào và xóa nó. Ngay cả sau khi loại trừ thư mục chứa DLL, hành vi tương tự vẫn tiếp tục cho đến khi tôi khởi động lại máy tính của mình.


0

Trong trường hợp của tôi, tôi đã thay thế các tệp thư viện toán học từ khóa học Đồ họa Công cụ Trò chơi trước đó bằng GLM. Vấn đề là tôi đã không thêm chúng vào dự án trong Trình khám phá giải pháp của Visual Studio (mặc dù chúng nằm trong kho dự án).


0

Tôi đã gặp sự cố này cùng với lỗi LNK2038, hãy làm theo bài đăng này để tách riêng RELEASE và DEBUG DLL. Trong quá trình này, tôi đã dọn dẹp toàn bộ thư mục nơi các tệp phụ thuộc này đang cư trú.

May mắn thay, tôi đã có một bản sao lưu của tất cả các tệp này và nhận được tệp có lỗi này đang quay trở lại thư mục GỠ LỖI để giải quyết vấn đề. Mã lỗi đã gây hiểu lầm theo một cách nào đó vì tôi đã phải dành nhiều thời gian để tìm lại mẹo này từ một trong những câu trả lời từ bài đăng này một lần nữa.

Hy vọng câu trả lời này, giúp đỡ ai đó đang cần.


0

Tôi đã giải quyết nó bằng cách thêm một dự án hiện có vào giải pháp của mình , mà tôi đã quên thêm vào lần đầu tiên.


0

Tôi đã có những lỗi giống nhau:

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

Điều này được gây ra bởi ; cuối cùng. Nếu bạn có nhiều thư viện, chúng nên được phân tách bằng dấu cách trống (phím cách), không có dấu phẩy hoặc dấu chấm phẩy!

Vì vậy, không sử dụng ;hoặc bất kỳ thứ gì khác khi liệt kê các thư viện trongProject properties >> Configuration Properties >> Linker >> Input


0

Tôi đã thử giải pháp trên nhưng không làm việc cho tôi. Vì vậy, tôi đổi tên exe và xây dựng lại giải pháp. Nó làm việc cho tôi.


0

Tôi đã gặp lỗi chính xác này khi tạo VC ++ DLL trong Visual Studio 2019:

LNK1104: không thể mở tệp 'C: \ Program.obj'

Hóa ra trong Thuộc tính dự án> Trình liên kết> Đầu vào> Tệp Định nghĩa Mô-đun, tôi đã chỉ định một tệp def có dấu ngoặc kép chưa khớp ở cuối tên tệp. Xóa dấu ngoặc kép chưa khớp đã giải quyết được sự cố.


0

Bị giết msbuild32.exevà xây dựng lại. Nó đã làm việc cho tôi.


-1

Tôi gặp vấn đề tương tự với "Visual Studio 2013".

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

Nó đã giải quyết sau khi đóng và khởi động lại Visual studio.


-3

Tôi đang gặp vấn đề tương tự, tôi vừa sao chép mã vào dự án mới và bắt đầu xây dựng. Một số lỗi khác bắt đầu đến. lỗi C4996: 'fopen': Hàm hoặc biến này có thể không an toàn. Cân nhắc sử dụng fopen_s thay thế

Để giải quyết vấn đề này một lần nữa, tôi đã thêm một thuộc tính của mình trong dự án Project như bên dưới. Dự án -> Thuộc tính -> Thuộc tính cấu hình -> c / c ++. Trong danh mục này có tên trường Định nghĩa tiền xử lý Tôi đã thêm _CRT_SECURE_NO_WARNINGS cái này để giải quyết vấn đề Hy vọng nó sẽ giúp ...

Cảm ơn bạn


Câu trả lời này không có mối quan hệ với bài viết gốc.
zar

Chưa kể việc vô hiệu hóa các tính năng bảo mật không hẳn là một ý kiến ​​hay
Matti Virkkunen
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.