none
Visual C++에서 프레임워크 및 참조를 추가했는데도 linking error가 발생하는 경우 RRS feed

  • 질문

  • 안녕하세요. 

    현재 Visual STudio 2010 Express를 이용해서 C++ 프로그램을 작성하고 있습니다. Solution 안에 .lib가 목적파일인 프로젝트 A가 하나 있고, 프로젝트 A 안에는 함수 정의인 a.h와 함수 구현인 a.cpp 파일이 들어 있습니다.

    그리고 프로젝트 B는 프로젝트 A를 사용하는데, main_eval.cpp라는 프로그램 안에서 a.h를 include해서 씁니다.

    현재, B에서 포함 디렉토리는 A로 잘 설정해서 컴파일까지는 되는 상황입니다. 그리고 A의 목적 파일인 A.lib를 이용하기 위해 프로젝트 B의 '속성 -> 공용 속성 -> 프레임워크 및 참조'에서 프로젝트 A를 '새 참조 추가'로 추가했습니다. '라이브러리 종속성 링크'는 True로, '라이브러리 종속성 입력 사용'은 False로 해 두었습니다.

    그런데, 위에 언급한 바와 같이, 컴파일까지는 되지만 링킹에서 아래와 같이 a.h에 정의되어 있던 함수를 찾지 못한다고 에러가 납니다.

    main_eval.obj : error LNK2001: .... 외부 기호를 확인할 수 없습니다.
    fatal error LNK1120: 1개의 확인할 수 없는 외부 참조입니다.

    Release 폴더나 Debug 폴더에 보면 A.lib 란 파일은 생성이 된 상황입니다. 모든 출력파일을 다 지운 다음에 다시 해 보았는데도 되지 않습니다.. 어느 부분에서 설정이 잘못된 것인가요???

    2013년 2월 8일 금요일 오전 9:52

답변

  • 이런 경우는 여러가지 이슈가 있을 수 있습니다.

    일반적으로 초보자들이 쉽게 놓칠 수 있는 것은 debug에서는 되고 release모드에서는 작동하지 않는 경우가 있습니다.

    헤더부분에 #pragma comment(lib, "라이브러리.lib")을 선언을 꼭 해주시기 바랍니다.

    또는 stdafx.h 꼭 명시해주시기 바랍니다.

    두번째로는 아래 부분과 같이 속성 설정도 시도 부탁드립니다.

    1. 프로젝트의 속성 페이지 대화 상자를 엽니다. 자세한 내용은 방법: 프로젝트 속성 페이지 열기를 참조하십시오.
    2. 구성 속성 노드를 확장합니다.
    3. 일반 속성 페이지를 클릭합니다.
    4. 문자 집합 속성을 "멀티바이트 문자 집합 사용"으로 변경합니다.

    [참조자료]

    링커 도구 오류 LNK2001

    제시해 드린 답변이 도움이 되었기를 바랍니다.

    답변이 문제 해결에 도움이 되었다면 답변으로 채택을 부탁드립니다.
    하지만 문제 해결이 되지 않아서 정확한 답변을 원하는 경우에는 문제의 정보를 더 자세하게 답변으로 제공해주시기 바랍니다.

    2013년 2월 12일 화요일 오전 5:40
    중재자