2013-05-07 9 views
2

그래서 하나의 커다란 정적 라이브러리를 모두 만들지 않고 헤더 라이브러리, 동적 라이브러리 및 정적 라이브러리를 정적 라이브러리에서 사용할 수 있습니까?정적 라이브러리와 함께 다른 라이브러리 사용?

구체적으로 말하자면, OpenGl에 렌더링 엔진을 쓰고 꽤 많은 도구를 사용하고 있습니다. 즉, : GLFW, GLM, GLEW 및 물론 OpenGL.

사용자가 모든 것을 가지고 있거나 내 라이브러리에 제공 한 경우 제공 할 수 있습니까?

답변

4

질문은 연결 문제 해결의 문제입니다. 템플릿 라이브러리 (헤더 만)는 명시 적 유형 인스턴스화가있는 템플릿 유형에 대해 생성 된 코드 만 가지고 있습니다. 라이브러리에 있어야하거나 헤더 라이브러리 의존성이 필요합니다. 외부 라이브러리와 정적 라이브러리 모두에 대한 연결 분석은 정적 라이브러리의 항목에 대한 외부 참조 또는 dll의 외부 코드를 조정하는 라이브러리를 사용하여 동일한 방식으로 해결됩니다.

복잡성은 디버그 대 릴리스, 32 비트 및 64 비트, OS 아키텍처, 컴파일 옵션, 이름 맹 글링 등과 같은 호환성의 형태로 제공됩니다.

가장 간단한 방법은 컴파일 모듈을 정적 라이브러리에 연결하고, 헤더를 제공하고, 종속성을 문서화하는 것입니다. 올바른 종속성을 제공 할 수 있다면 훨씬 더 좋습니다 .

VC를 사용하는 경우 Lib 도구를 사용하면 라이브러리의 내용을 이해하는 데 도움이됩니다. 그것을 사랑하는 것을 배우십시오 :)

+0

그래서 내가 올바르게 이해한다면 VC 프로젝트 구성에서 의존성과 링커를 추가하는 것이 DLL과 LIB의 트릭을 어느 정도 수행 할 것입니다. 템플릿 라이브러리가 내 라이브러리에 포함되어야합니까? –

+0

하지만 너무 간단합니다. 그렇습니다. 둘 이상의 장소에서 링크하려는 객체 코드를 가질 수 없거나 링커가 불평 할 것입니다. –

관련 문제