Visual Studio에서 C ++ 프로젝트를 컴파일 할 때 "LNK1104 : 'C : \ Program.obj'파일을 열 수 없습니다. '라는 치명적인 오류가 발생하는 이유는 무엇입니까?


117

Visual Studio 2008에서 새로운 C ++ 프로젝트를 만들었습니다. 아직 코드가 작성되지 않았습니다. 프로젝트 설정 만 변경되었습니다.

프로젝트를 컴파일 할 때 다음과 같은 치명적인 오류가 발생합니다.

치명적인 오류 LNK1104 : 'C : \ Program.obj'파일을 열 수 없습니다.

답변:


153

이 특정 문제는 경로에 공백이있는 lib 파일에 대한 종속성을 지정하여 발생합니다. 프로젝트를 올바르게 컴파일하려면 경로를 따옴표로 묶어야합니다.

프로젝트 속성구성 속성-> 링커-> 입력 탭에는 추가 종속성 속성이 있습니다. 이 문제는이 속성을 다음에서 변경하여 해결되었습니다.

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

에:

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

따옴표를 추가 한 곳.


17
방금 이틀의 버그 추적을 30 초에
걸었습니다.

10
나는 같은 문제가 있었다. 링커가 정확하지만 lib 디렉토리가 잘못 설정된 경우 동일한 오류가 발생할 수 있습니다. 에서 찾고 시도 구성 속성 -> VC ++ 디렉토리 -> 라이브러리 디렉토리가 올바르게 라이브러리를 설정하면 볼 수 있습니다. 때때로 lib 폴더는 x86 및 x64 폴더로 구성됩니다. 둘 다 포함하는 폴더가 아닌 컴파일러에 따라 둘 중 하나로 설정해야합니다.
M4st3rM1nd

1
뒤에 세미콜론을 넣는 것을 잊지 마십시오 "C:\Program Files\sofware sdk\lib\library.lib". 가 없으면 ;프로젝트가 잘못 컴파일 될 수도 있습니다.
roscioli

1
Visual Studio 2005 (Windows 8.1에서)를 사용하여 OpenCV를 빌드하는 동안이 문제가 발생하여 해결되었습니다. 큰!
AlainD 2014

1
나는 그것을 시도했지만 작동하지 않았습니다. "Qt5Xmld.lib"; "Qt5XmlPatternsd.lib"; "Qt5Cored.lib"; % (AdditionalDependencies) -무엇을 변경해야합니까?
STF

65

이는 파일이 여전히 실행중인 경우 발생할 수 있습니다.

: -1 : 오류 : LNK1104 : 'debug \ ****. exe'파일을 열 수 없습니다.


4
이것도 내 문제였다!
Kamran Bigdely 2014

1
MS Security Essentials가 파일을 잠그기 때문에 발생합니다.
Synetech

예, 이전 콘솔 창을 닫고 갑자기 lib를 읽을 수 있습니다.
Kari

15

Visual Studio를 닫았다가 다시 열면 문제가 해결되었습니다. 문제가 발생한 이유는 확실하지 않지만 한 번 시도해 볼 가치가 있습니다.

이것은 VS 2013 Ultimate, Windows 8.1에있었습니다.


4
아, 마이크로 소프트는 ... 우리의 첫 번째 시도는 항상 가까이 있어야하고 다시 (또는 전원을 껐다에) - 우리는 ... 그 수행 할 때 몇 가지 이상한 버그가 떨어져 간다
레오나르도 알베스 마차도

1
이 솔루션이 내 문제를 해결할 수 있다는 것이 너무 부끄럽습니다. 이제는 더 이상 친구와 가족을 만나러 밖에 나갈 수 없습니다.
javaLover

2
당신은 캐롤과 같은 문제가있었습니다.
amod

10

이 기능이 켜져 있지 않은지도 확인하십시오 : 구성 속성-> C / C ++-> 전 처리기-> 파일로 전처리 .


제 경우에도 문제가 있었지만이 플래그를 켜려면 어떻게해야합니까 (Prepossessed 파일을 보려면)?
Guy Avraham

2
여기에 몇 가지 해결 방법이 있습니다. 전처리 된 코드를 출력하고 컴파일하는 방법 (Visual Studio) 및 여기 : / p 인수 (파일로 전처리)를 사용하여 프로젝트 컴파일 (VS 2008)은 컴파일되지 않습니다 . 그러나 본질적으로 컴파일러 옵션이므로 둘 중 하나만 수행 할 수 있습니다.
Assaf Levy

4

추가 라이브러리 경로의 폴더 이름에 ","가 붙은 문제가 발생했는데 추가 라이브러리 경로를 변경하여 해결했습니다.



3

제 경우에는 잘못된 참조의 문제였습니다. 프로젝트는 다른 프로젝트의 출력을 참조했지만 후자는 전자가 찾고있는 파일을 출력하지 않았습니다.


3

해결 방법 1 (제 경우) : Windows 탐색기 프로세스를 다시 시작합니다 (예, Windows 파일 관리자).

해결 방법 2 :

  1. Visual Studio를 닫습니다. Windows 로그 오프
  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 (selected))의 경우 Generate Preprocessed Source ListingTrue 로 설정하면 문제가 발생하여 설정을 지우면 문제가 해결되었습니다. 여기에 VS2013.


1

링커가 주요 실행 파일 누락에 대해 불평하는 것과 동일한 문제가 발생합니다. 이는 솔루션을 새로운 Visual Studio 2013으로 이식하는 동안 발생했습니다 . 솔루션은 관리 및 비 관리 프로젝트 / 코드의 다양한 조합입니다. 문제 (및 수정)는 솔루션 폴더에 누락 된 app.config 파일이되었습니다. 이 문제를 해결하는 데 하루가 걸렸습니다 :( 출력 로그가 그다지 도움이되지 않았기 때문입니다.



0

다른 사람이 나열한이 특정 솔루션을 볼 수 없기 때문에 대답하고 있습니다.

분명히 내 바이러스 백신 (Ad-Aware)이 내 프로젝트 중 하나가 의존하는 DLL에 플래그를 지정하고 삭제했습니다. DLL이있는 디렉터리를 제외한 후에도 컴퓨터를 다시 시작할 때까지 동일한 동작이 계속되었습니다.


0

제 경우에는 이전 Game Engine Graphics 과정의 수학 라이브러리 파일을 GLM으로 대체했습니다. 문제는 Visual Studio의 솔루션 탐색기 내의 프로젝트에 추가하지 않았다는 것입니다 (프로젝트 리포지토리에 있음에도 불구하고).


0

LNK2038 오류와 관련하여이 문제가 발생 했습니다. 에 따라 RELEASE 및 DEBUG DLL을 분리했습니다. 이 과정에서 이러한 종속성이있는 전체 폴더를 정리했습니다.

운 좋게도이 모든 파일의 백업이 있었고이 오류가 문제를 해결하기 위해 DEBUG 폴더로 다시 던져지는 파일을 얻었습니다. 이 게시물의 답변 중 하나에서이 팁에 도달하기 위해 많은 시간을 소비해야했기 때문에 오류 코드는 어떤면에서 오해의 소지가있었습니다.

이 답변이 도움이 필요한 사람을 돕기를 바랍니다.


0

나는하여 해결 추가 기존 프로젝트 솔루션을 내가 추가하는 것을 잊었다 처음에.


0

동일한 오류가 발생했습니다.

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

이것은 ; 끝에 . 라이브러리가 여러 개인 경우 쉼표 나 세미콜론없이 빈 공간 (스페이스 바)으로 구분해야합니다!

따라서 ;라이브러리를 나열 할 때 또는 다른 것을 사용하지 마십시오 .Project properties >> Configuration Properties >> Linker >> Input


0

위의 솔루션을 시도했지만 저에게 효과적이지 않았습니다. 그래서 exe의 이름을 바꾸고 솔루션을 다시 빌드합니다. 그것은 나를 위해 작동합니다.


0

Visual Studio 2019에서 VC ++ DLL을 빌드 할 때 다음과 같은 정확한 오류가 발생했습니다.

LNK1104 : 'C : \ Program.obj'파일을 열 수 없습니다.

프로젝트 속성> 링커> 입력> 모듈 정의 파일 에서 파일 이름 끝에 일치하지 않는 큰 따옴표 가있는 def 파일을 지정했습니다 . 일치하지 않는 큰 따옴표를 삭제하면 문제가 해결되었습니다.


0

죽이고 msbuild32.exe다시 건설되었습니다. 그것은 나를 위해 일했습니다.


-1

"Visual Studio 2013"에서 동일한 문제가 발생했습니다.

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

Visual Studio를 닫았다가 다시 시작한 후 해결되었습니다.


-3

나는 같은 문제가 있었는데, 방금 코드를 새 프로젝트에 복사하고 빌드를 시작했습니다. 다른 오류가 발생하기 시작했습니다. 오류 C4996 : 'fopen':이 함수 또는 변수는 안전하지 않을 수 있습니다. 대신 fopen_s 사용 고려

이 문제를 다시 해결하기 위해 다음과 같이 Project 프로젝트에 하나의 속성을 추가했습니다. 프로젝트-> 속성-> 구성 속성-> c / c ++. 이 카테고리에는 문제를 해결하기 위해 _CRT_SECURE_NO_WARNINGS를 추가 한 필드 이름 전 처리기 정의가 있습니다.

감사합니다


이 답변은 원래 게시물과 관련이 없습니다.
zar

보안 기능을 비활성화하는 것은 좋은 생각이 아닙니다
Matti Virkkunen
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.