2012-02-12 2 views
6

일부 .lib 파일이 있지만 .h 헤더 파일에 액세스 할 수 없습니다. 이제 .lib 파일이 쓸모가 없다는 뜻입니까?.lib 파일은 헤더 파일없이 쓸모가 있습니까?

그렇지 않은 경우 어떻게 다시 사용할 수 있습니까?

내 프로그램에서이 줄을 사용해 보았지만 최종 실행 파일 (CFF Explorer로 확인)로 컴파일되지 않은 것 같습니다.

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

.lib 파일을 연결하는 유일한 방법은 헤더 파일을 사용하는 것입니다. .lib 파일의 헤더 파일을 복구 할 수있는 도구가 있습니까?

+4

라이브러리의 다운로드 페이지로 이동하여 헤더를 다시 다운로드하지 않는 이유는 무엇입니까? – Lefteris

+0

도구를 사용하여 파일을 생성했습니다. .dll 및 .lib 등으로 출력합니다. .dll을 사용하여 문제가 없지만 왜 .hib 파일이없는 .lib가 생성되었는지 궁금합니다. – user25101622

+1

dll은 어떻게 사용합니까? 헤더가 있어야합니다. 맞습니까? .NET을하고 있지 않다면. 왜 그렇게 모호한거야? 도구의 이름을 알려주십시오. –

답변

5

.lib 파일 코드가 작성된 방법에 따라 다릅니다. 그것이 c api라면 extern 키워드가있는 것입니다. 함수 내보내기를 보여줄 수있는 일종의 프로그램을 찾을 수 있습니다. 그런 다음 코드에서 extern으로 선언 할 수 있습니다. 문제는 귀하의 데이터 구조 것입니다.

어쨌든, 당신은 기술적으로 자신의 데이터 구조를 정의하고, 통근 키워드로 함수를 선언 할 수, 헤더 파일이 필요하지 않습니다.

컴파일 과정이 끝날 때 링커를 실행할 때 .lib를 링크 할 수 있습니다.

+2

오해하지 마세요. 이렇게하는 가장 좋은 방법은 헤더를 찾는 것입니다. –

2

.lib 파일을 링커 명령 줄에 전달하여 연결할 수 있습니다 (아니 #pragma 필요 없음).

물론 내부적으로 실제로는 호출 규칙, 함수 서명, 사용자 정의 형식 레이아웃 등을 알아야합니다. 일반적으로 헤더 파일에서 제공되지만 문서에서도 찾을 수 있습니다.

어떤 경우에도 헤더 파일은 컴파일러에서 생성되지 않습니다 (물론 MIDL 및 CORBA는 컴퓨터에서 생성 된 헤더 파일을 사용하지만 헤더의 모든 정보는 여전히 .idl 파일에 수동으로 입력됩니다). 그리고 기술에서 형식 라이브러리를 사용하지 않는 한 필요한 정보가 DLL로 유지되지 않습니다.

관련 문제