본문 바로가기

IDE/Visual Studio

"LNK1104 'XXXX.lib' 파일을 열 수 없습니다" 빌드 오류

이 문서의 내용

    테스트 환경 및 주요 아젠다

    더보기

    이 프로젝트의 개발 환경

    • 개발 언어 및 주요 환경
      • Visual Studio 2022
      • C++ 17
    • 기타 환경
      • Windows 10

    Boost 라이브러리를 빌드하고 프로젝트에 링크하였습니다. 

    프로젝트를 빌드하면 LNK1104 'XXXX.lib' 파일을 열 수 없습니다 오류가 발생합니다.

    LNK1104	'libboost_json-vc143-mt-gd-x64-1_84.lib' 파일을 열 수 없습니다.

    Step 1: 링크 파일 및 경로 확인

    프로젝트 설정 | 구성 속성 | 링커 | 일반에서 추가 라이브러리 디렉토리에 추가된 lib 파일 경로를 확인합니다.

    C:\Users\namep\Downloads\boost_1_84_0\boost_1_84_0\stage\lib

    lib 파일 경로로 이동하여 소스 코드에서 include하는 lib 파일이 실제로 존재하는지 확인합니다.

    빌드 오류 또는 빌드 버전에 의해 Deprecated 된 파일인 경우 재빌드 또는 버전을 변경하여 다시 진행합니다.

    또는 링크 파일의 경로가 잘못 지정된 경우 문제가 발생합니다.

    Step 2: 좀비 프로세스 종료

    컴파일이 연속되는 과정에서 이전에 실행된 프로세스가 비정상적으로 종료된 경우 문제가 발생합니다.

    CMD를 실행하고 현재 프로세스 리스트를 표시합니다.

    $ TASKLIST
    
    이미지 이름                    PID 세션 이름              세션#  메모리 사용
    ========================= ======== ================ =========== ============
    System Idle Process              0 Services                   0          8 K
    System                           4 Services                   0        148 K
    Registry                       108 Services                   0     33,608 K
    ...

    솔루션 이름과 일치하는 이미지 이름을 찾고 PID를 확인합니다.

    PID를 사용해 좀비 프로세스를 강제 종료합니다.

    $ TASKKILL /F /PID <PID>
    더보기

    TASKKILL 명령어의 /F 옵션은 지정된 프로세스와 그 프로세스로부터 시작된 모든 자식 프로세스를 종료합니다.

    $ TASKKILL /?
    
    TASKKILL [/S 시스템 [/U 사용자 이름 [/P [암호]]]]
             { [/FI 필터] [/PID 프로세스 id | /IM 이미지 이름] } [/T] [/F]
    
    설명:
        이 도구는 프로세스 ID(PID) 또는 이미지 이름으로 작업을 종료하는 데
        사용합니다.
    
    매개 변수 목록:
        /S    시스템           연결할 원격 시스템을 지정합니다.
    
        /U    [도메인\]사용자  명령을 실행해야 하는 사용자 컨텍스트를
                               지정합니다.
    
        /P    [암호]           해당 사용자 컨텍스트의 암호를 지정합니다.
                               생략한 경우에는 물어봅니다.
    
        /FI   필터             작업 집합을 선택하는 필터를 적용합니다.
                               "*"를 사용할 수 있습니다. 예: imagename eq acme*
    
        /PID  프로세스_ID      종료할 프로세스의 PID를 지정합니다.
                               TaskList를 사용하여 PID를 얻을 수 있습니다.
    
        /IM   이미지 이름      종료할 프로세스의 이미지 이름을
                               지정합니다. 와일드카드 문자 '*'를 사용하여
                               모든 작업 또는 이미지 이름을 지정할 수 있습니다.
    
        /T                     지정된 프로세스와 그 프로세스로부터 시작된
                               모든 자식 프로세스를 종료합니다.
    
        /F                     프로세스를 강제로 종료하도록 지정합니다.
    
        /?                     이 도움말 메시지를 표시합니다.