LNK 2019 에러

2021. 7. 31. 18:19·냠냠쩝쩝/C++
반응형

컴파일을 하다보면 종종 발생하는 에러중에 LNK2019라는것이 있다.

하나의 문제로 인한 에러가 아니여서 좀 골치아픈 에러중에 하나다.

 

LNK2019 에러의 원인들에 대해 알아보자.

 

1. 필요한 라이브러리(LIB)를 추가했는지 확인하자.

  • Visual Studio 2019 기준
  • 아래와 같이 프로젝트를 우클릭하고 속성을 눌러 속성 페이지를 열어준다.
  • '구성속성 → 링커 → 일반 → 추가 라이브러리 디렉터리'에서 추가할 라이브러리 폴더를 설정한다.

프로젝트 속성

  • 그 다음 아래와 같이 '구성속성 → 링커 → 입력 → 추가 종속성'에 추가할 라이브러리를 입력해주면 된다.

추가 종속성

  • 또는 아래 처럼 전처리기로 추가할 수도 있다.

#pragma comment(lib, "라이브러리이름.lib")

 

 

2. 프로젝트에 헤더 파일(.h)과 구현 파일(.cpp)을 추가했는지 확인하자.

  • 소스코드에 #include 전처리기로 헤더 파일을 추가했지만, 프로젝트에는 해당 헤더 파일과(.h)과 구현 파일(.cpp)가 추가되어있지 않은 경우 LNK2019 에러가 발생한다.

 

3. 빌드모드를 전환하지 않았나 확인하자.

  • 아래와 같이 솔루션 구성을 기존의 구성과 다른 Debug 혹은 Release모드로 전환했는지 확인하자.
    각 모드의 빌드 설정은 개별로 해줘야하기 때문이다.

솔루션 구성

 

4. 파일 확장자가 다른 구현 파일을 같은 프로젝트에 넣고 빌드했는지 확인하자.

  • C와 C++의 구현 파일 확장자는 각각 .c 와 .cpp로 컴파일에서는 문제가 없으나 이름변경(Naming Mangling)이 다르기 때문에 링킹 에러가 발생한다.
  • 이런 경우 .c 확장자를 .cpp 로 변경해주면 해결된다.

 

5. inline 함수의 선언과 정의를 각각 헤더 파일(.h)과 구현 파일(.cpp)에 분리했는지 확인하자.

  • inline 함수를 선언과 정의를 각각 헤더 파일과 구현 파일에 분리하면 LNK2019 에러가 발생한다.
  • inline 함수는 해당 함수가 호출되는 부분을 inline 함수 정의 코드로 대체하는 방식이므로, 선언과 정의가 분리되어 있으면 인라이닝이 불가능하여 링크에러가 발생한다.
  • inline 함수는 헤더 파일에 선언과 정의를 같이 넣어줘야 한다.

 

6. template을 사용할 때 선언과 정의를 각각 헤더 파일(.h)과 구현 파일(.cpp)로 분리했는지 확인하자.

  • template의 경우 동적으로 각 데이터 타입에 맞는 소스 코드를 만들어 내는 방법이므로, 선언과 정의를 각각의 파일로 분리해서는 안된다.

 

※ https://vaert.tistory.com/5의 내용을 참고했습니다.

반응형

'냠냠쩝쩝 > C++' 카테고리의 다른 글

__func__  (0) 2021.07.31
error C2143 오류  (0) 2021.07.31
'냠냠쩝쩝/C++' 카테고리의 다른 글
  • __func__
  • error C2143 오류
GOOROOM
GOOROOM
게임이 좋아서 게임 개발을 합니다.
  • GOOROOM
    GOOROOM
    GOOROOM
  • 글쓰기
    관리
  • 전체
    오늘
    어제
    • 분류 전체보기
      • 일상
      • 냠냠쩝쩝
        • C++
        • Python
      • 긁적긁적
        • Unreal Engine
        • Unity
      • OS
        • Windows
        • Mac
        • Android
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    keystore
    material
    엣지 탭
    permission
    백스페이스 키
    python
    삭제
    xcode
    alt + tab
    파이썬
    ios
    패키징
    Mac
    랜드스케이프
    UE4
    Admob
    edge
    esp 공간 확보
    C++
    엣지 불편
    landscape
    앱 전환
    backspace key
    Android
    STL
    에러
    UE5
    머터리얼
    SVN
    navigate back
  • 최근 댓글

  • 반응형
  • hELLO· Designed By정상우.v4.10.3
GOOROOM
LNK 2019 에러
상단으로

티스토리툴바