본문 바로가기

기타

Visual Studio LNK1104 에러 해결방법

OpenGL 프로그램을 짜다가 실행했는데 exe 실행 프로그램이 interrupt되면서 좀비 프로세스가 되는 상황이 발생했다.

 

그 이후엔 exe는 종료되었는데 LNK1104 에러가 발생하며 계속 디버깅이 불가능한 난처한 상황이 되어버렸다.

 

당하는 사람은 미치고 팔짝 튈 노릇이다..

 

이럴 때마다 유일한 해결책은 컴퓨터를 재부팅하는 것이었는데, 오늘에서야 확실한 해결방법을 찾았다.

 

시작하기 전에...

LNK1104 에러에는 여러 원인이 있다.

 

우선 나의 경우에는 Debug 폴더 아래의 exe가 좀비 프로세스로 떠돌아 생긴 문제이고, 기타 경로 문제나 디스크 공간 문제, 권한 문제 등 다양한 원인이 있을 수 있는데, 이 포스팅은 내가 겪은 오류를 기준으로 해결 방법을 설명하겠다.

 

약 2시간 가량의 구글링을 통해 알게 된 것은, 정말 모르는 사람은 누군가 알려주지 않는 이상 알 수 없는 해결 방법이 존재하긴 한다는 것이다.

 

보통 LNK1104 에러는 나와 같은 경우의 원인에서 발생하는데, 관리자 권한으로 task kill을 해도 액세스가 거부되는 뭣같은 일이 벌어져서 화가 날 수 밖에 없는 상황이 생기기도 한다.

 

Visual Studio에서 발생하는 것뿐 아니라 관리자 권한으로도 kill이 안되는 process 인스턴스를 삭제할 때도 유용한 방법이라 생각된다.

 

1. 우선, 윈도우 시작 버튼 우측의 검색 창을 클릭하고 입력 창에 cmd를 입력한다.

2. 옵션 중 관리자 권한으로 실행을 클릭하여 명령 프롬프트를 관리자 권한으로 실행한다.

3. cmd 창에 tasklist를 입력하고 엔터를 치면 Process List가 쭈욱 뜨는데, 여기에서 이름으로 자신의 프로세스를 찾는다. 예를 들어 자신이 실행하는 프로세스가 service.exe라면 이미지 이름에서 service.exe 이름을 찾고, 이름 우측에 있는 PID를 기억하면 된다. 예를 들어 PID가 38448이라고 하자.

4. 이제 taskkill /f /pid 38448 을 치면 프로세스가 종료되고, VS에서 디버깅을 다시하면 정상적으로 된다.

4-1. 이 때, 종료가 잘 되면 좋겠지만 액세스 거부 오류가 뜨는 경우가 있다. 이런 경우 다음 명령어를 치면 된다.

wmic process where name='service.exe' delete (이 명령어를 칠 때 프로세스 이름이 겹치는 것이 많다면 조금 조심해야할 수도...) 여튼 인스턴스를 삭제했습니다. 라고 하며 task가 강제 삭제되고, 해결된다. 참고로 위의 38448service.exe는 예시이니 자신의 상황에 맞게 쓰길 바람.

4-2. 4-1에서 해결이 안될 경우... 내 생각에는 컴퓨터 재부팅밖에 답이 없다. 

 

 

4번 방법으로 안되어서 4-1번 방법으로 문제를 해결하게 되는 사람이 많았으면 좋겠다.

 

 

4-1 내용은 아래 블로그를 참고했다. (고마우신 분...)

https://www.happyzoo.net/207