2013-02-07 7 views
2

.lib 정적 라이브러리가 있습니다. 나는 Linker 설정 'Additional Library Directories'와 'Additional Dependencies'아래에 pragma comment (lib, "mylib").을 사용하여 링크했습니다. 그리고 그것들 모두가 잘 컴파일됩니다.Visual Studio 2012에서 .lib 사용 (C++)

필자가 묻는 것은 솔루션을 링크 할 때 찾을 수있는 것만 큼, 실제로 그 기능을 실제로 사용하는 방법입니다. 정적 라이브러리에서 'MyFunc'함수를 참조하면 어떻게 호출 할 수 있습니까? Visual Studio는 현재 라이브러리에 정의 된 모든 네임 스페이스 또는 함수를 인식하지 못합니다.

감사합니다.

+0

죄송합니다 "파일을 포함"로 언급하고 있습니다. 나는 그것을하지 않는 이유는 무엇입니까 – knoxaramav2

+0

거기에 대해 컴파일 할 필요가있는 헤더 파일이 있다고 추측합니다/메서드는 클래스 정의가 있습니까? –

+0

형식 정보 - 4 개의 공백으로 구분 된 텍스트는 코드 블록으로 구문 분석됩니다. 인라인 주석의 경우'문자를 사용하십시오. –

답변

5

일반적으로 라이브러리와 함께 제공되는 해당 라이브러리의 헤더 파일을 가져와야합니다. 그런 다음 함수를 사용하려는 파일에 파일을 포함시키고 선언 된 프로토 타입을 사용하여 함수를 호출해야합니다.

컴파일러는 링커의 작업 인 lib 파일을 읽거나 구문 분석 할 수 없기 때문에 함수의 프로토 타입에 대해 알아야합니다. 난 당신이 요구하는 것을 이해한다면

+1

Doh, 그게 내가 팝업을 볼 때 "새로운 대답로드 중"이 아니란 것입니다. :) – JerKimball

+0

흠, 좋아. 프로젝트에서 .h 파일을 받았고 컴파일 할 때 릴리스 폴더의 .lib를 사용하고 있습니다. 링커가 .lib와 함께 릴리스 폴더로 설정되어 있고 'MyLib.h'가있는 상위 디렉토리의 c/C++ -> general 아래 'include additional directories'가 있습니다. 이제 [오류 LNK1104 : 파일 'MyLib.lib' – knoxaramav2

+0

@JerKimball을 열 수 없지만 대략 잃을 것입니다. 3 초, 그래서 세계에서 매우 오랜 시간입니다 - 내가 그 상자를 매번 클릭하면, 나는 여전히 명성의 500을 가지고 :). –

2

, 당신은 당신을 위해 프로토 타입을 선언 할 필요가 함수 - 생활 -에 - A-LIB가 :

는 말 당신의 lib 디렉토리가 있습니다에서

int Foo(int bar) { ... } 

당신의

extern int Foo(int bar); 

또는 단지 :

당신이 당신의 lib 디렉토리를 pragma "소비자는"당신은 상태 뭔가가 필요 것
int Foo(int bar); 

보통, 당신은 헤더 파일 (.h 파일)을 통해이 작업을 수행하고, 라이브러리, 그들은 보통 이상한 형식에 대한