문제

vc ++를 설정하여 코드를 .exe 대신 .lib 파일로 컴파일하는 방법을 알아 냈지만 다른 .obj 파일과 함께 링크하기 위해 lib를 가져 오는 데 어려움이 있습니다.

라이브러리 및 응용 프로그램 폴더가 설정되는 방법은 다음과 같습니다. (이것이 옳은지 잘 모르겠습니다)

AppFolder
  App.sln
  App.ncb
  *.h
  *.cpp
  Debug
    *.obj
    App.exe

그리고 하드 드라이브의 다른 곳 ...

LibraryFolder
  lib
    Library.lib
  include
    LibrarySolutionFolder
      Library.sln
      Library.ncb
      *.h
      *.cpp
      Debug
        *.obj
        Library.lib

내 앱의 CPP 파일에서 라이브러리 *.H 파일을 #IN을 포함하고 있으며 모든 것이 정상적으로 컴파일됩니다. 링크 할 때 검색중인 모든 .lib 파일의 목록을 가져오고 Library.lib는 VC ++ 디렉토리에 나열되어 있더라도 거기에 없습니다. 이것을 링크 할 수있는 방법은 무엇입니까? (그리고 라이브러리 폴더를 올바르게 구조화하고 있습니까?)

도움이 되었습니까?

해결책

프로젝트 속성에서 :

구성 속성 -> 링커 -> 입력 -> 추가 종속성

거기에 추가하십시오.

또는 라이브러리의 .H 파일에서 다음을 추가하십시오.

#pragma comment(lib, "Library")

이것은 당신을 위해 자동으로 할 것입니다.

다른 팁

VC ++ 디렉토리는 링크 중에 검색 할 디렉토리 위치 목록입니다. 연결해야 할 라이브러리 목록이 아닙니다.

lib 파일을 다음에 추가해야합니다 추가 종속성 의장 프로젝트 링커 설정.

라이브러리와 연결하려면 다음 중 하나를 사용할 수 있습니다.

  • Project-> Properties ...-> 링커, 입력-> 추가 종속성에 나열하십시오 (VC ++ 디렉토리 만 .lib 이름만으로 전체 경로 만 사용할 수 있습니다),
  • 라이브러리 프로젝트를 앱에 추가하십시오. 솔루션 (솔루션에서 마우스 오른쪽 버튼을 클릭하십시오 -> 추가 -> 기존 프로젝트 ...)을 사용한 다음 프로젝트 -> 프로젝트 종속성을 사용한 다음 라이브러리 프로젝트를 확인하십시오 (드롭 다운에서 응용 프로그램 프로젝트가 선택되었는지 확인). VC ++는 앱을 구축하기 전에 변경된 경우 라이브러리를 재건하므로 두 프로젝트를 편집하는 경우 가장 좋은 방법 일 것입니다.
  • VC ++ 만 사용할 것입니다.

      #pragma comment(lib,"C:\\path\\to\\library.lib")`
    

    (감사합니다 @nils)

NB : 도서관 솔루션 폴더가 '포함'디렉토리 안에있는 것은 매우 이상해 보입니다. #includeD 파일).

명령 줄에서 :

cl /ehsc {objfiles}+ /link /libpath : libraryfolder library.lib

여기서 {objfiles}+는 하나 이상의 객체 또는 CPP 파일을 의미합니다.

Header-File을 포함하는 경우 VC는 단순히 라이브러리를 연결하지 않습니다.

라이브러리를 사용하려면 링커에 알려야합니다. 정당한 이유 : Alredy는 라이브러리 폴더에 수천 개의 libs를 가지고 있습니다. MSVC가 프로그램을 연결할 때마다 모든 것을 검색해야한다면 메가 바이트의 데이터 헌드 렛을 wade해야합니다.

꽤 오랜 시간이 걸리므로 기본적으로 수행되지 않습니다.

VC의 경우 소스 내부의 링커에 힌트를 줄 수도 있습니다. 그렇게하려면 소스 코드 어딘가에 다음 줄을 추가합니다 (LIB의 헤더는 좋은 장소 일 수 있습니다).

#pragma comment(lib,"c:\\path_to_library\\libname.lib")

이는 플랫폼 Independet이 아니라 MSVC를 사용하여 프로젝트에 자동으로 LIB를 연결하는 가장 편리한 방법입니다.

또 다른 방법은 단순히 프로젝트 설정에 링커를 추가하는 것입니다. 관련 정보는 프로젝트의 링커 설정을 찾을 수 있습니다. 릴리스 및 디버그 구성에 LIB를 추가하는 것을 잊지 마십시오.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top