2015-01-17 2 views

답변

1

ratchet freak이 말했듯이 종속성을 정적 라이브러리로 컴파일해야합니다. 종속 라이브러리를 정적 라이브러리로 사용하면 동적 라이브러리처럼 항목에 libs 항목을 나열 할 수 있습니다.

빛나는 예제가 아닐 수도 있지만 heredub.json입니다. 정적 및 동적 빌드를 모두 생성하려는 프로젝트를 관리하는 데 사용합니다. configurations 섹션을 사용하여 정적 및 동적 링크 빌드를 구분합니다. 빌드 할 때 정적 및 동적 빌드 중에서 선택하려면 --config= 플래그를 사용합니다.

사용자가 직접 정적 라이브러리를 빌드하고 시스템의 라이브러리 검색 경로에 넣지 않으려면 lflags의 -L 옵션을 사용하여 정적 라이브러리의 위치를 ​​지정할 수 있습니다.

즉각적인 종속성을 정적으로 컴파일한다고해서 반드시 프로젝트에 동적 종속성이 없다는 것을 의미하지는 않습니다. 정적으로 종속성을 종속시키지 않는 한 동적으로 종속성의 종속성에 연결할 수 있습니다. 예를 들어 위에 링크 된 프로젝트는 allegro 및 해당 모듈에 정적으로 링크되어 있지만 libogglibpng과 같은 종속성 (정적 버전을 컴파일하지 않았으므로)과 같이 동적으로 링크됩니다.

+0

그래서 모든 더빙 패키지를 수동으로 다시 컴파일해야합니까? AppData \ Roaming \ dub \ packages의 내용을 의미합니까? – Suliman

+0

실제 D 라이브러리가 실행되는 한,'dub.json'의'targetType' 필드를 변경하는 것만 큼 간단해야합니다. 이것은'staticLibrary'로 설정하여 출력을 정적 라이브러리로 강제 설정할 수 있지만 제 경험상 간단히'library'로 설정하면 기본적으로 정적 라이브러리가 기본값으로 설정됩니다. 내 대답은 실수로 당신이 동적으로 링크 될 가능성이 높은 C 라이브러리에 대해 말하고 있다고 가정했을 것입니다. – rcorre

+0

나를 설명해 주시겠습니까? 동적 라이브러리와 정적으로 링크 할 수있는 이유는 무엇입니까? 그들은 완전한 수입이 없는가? –