2011-10-21 4 views

답변

31

Windows의 경우 .dll 파일과 직접 연결하지 마십시오. – .lib 파일을 사용해야합니다. 그러려면 Project -> Properties -> Configuration Properties -> Linker -> Additional Dependencies으로 가서 .lib의 경로를 다음 행으로 추가하십시오.

또한 .dll 파일이 %PATH% 환경 변수에 의해 또는 그 사본 Output Directory에 있는지 포함 된 디렉토리 (기본적으로,이 프로젝트의 폴더 아래 Debug\Release입니다) 중 하나입니다 있는지 확인해야합니다.

당신이 .lib 파일에 액세스 할 수없는 경우

은 하나 개의 대안은 LoadLibraryGetProcAddress 같은 런타임 사용 WINAPI 기능 중에 수동으로 .dll를로드하는 것입니다.

+0

나는 .h 파일에 대해서도 언급했다. 이 과정에서 우리가 필요합니까? .lib 파일에는 dll에 대한 모든 정보가 들어 있으므로 필요하지 않다고 생각합니다. – darkgaze

+0

@darkgaze .h 파일에 일반적으로 프로토 타입, 선언, 상수, 매크로 등이 모두 포함되어 있기 때문에 여전히 필요하다고 생각합니다. –

19

DLL에 직접 추가하거나 DLL에 링크하지 않고 DLL에서 생성 한 LIB에 연결합니다.

LIB는 코드에 라이브러리를 포함 (정적 연결)하거나 DLL (동적 연결)을 참조하기 위해 기호 및 기타 필요한 데이터를 제공합니다.

LIB와 링크하려면 프로젝트 -> 링커 -> 입력 -> 추가 종속성 목록에 추가해야합니다. 여기에있는 모든 LIB 파일이 링크에 사용됩니다. 다음과 같이 프라그 마를 사용할 수도 있습니다.

#pragma comment(lib, "dll.lib") 

정적 연결에서는 코드가 실행 파일에 포함되며 런타임 종속성이 없습니다. 동적 연결을 사용하려면 이름과 기호가 일치하는 DLL이 the search path (이 아닌 경로 또는 시스템 디렉토리 만 사용 가능) 내에서 사용 가능해야합니다.

+2

정적 연결 정보 : Visual Studio에서 특정 디렉터리의 DLL을 빌드 (또는 링크)에 출력? – Marcel

+2

@Marcel 각 프로젝트는 사전 구축, 사후 구축 및 기타 다양한 단계를 제공합니다 (프로젝트 설정에 체크인). 거기에 파일 복사본을 만들거나 전체 스크립트를 실행할 수도 있습니다 (스크립트를 git 리비전 ID에서 헤더를 만들고 빌드 전 빌드 번호를 증가시킨 다음 게시물을 테스트 설치로 복사). – ssube

관련 문제