문제

iPhone 응용 프로그램에서 사용할 정적 라이브러리를 만들고 있습니다. 여기에는 기호를 내보내는 여러 소스 파일이 포함되어 있습니다. 기호를 내보내는 모든 소스 파일이 포함되어 있으며, 클래스의 정적 인스턴스를 인스턴스화 한 다음 다른 곳에서 중앙 관리자 클래스에 다양한 물건을 등록하는 일부 코드를 실행하는 것입니다. 코드가 표준 iPhone 애플리케이션의 일부로 구축 될 때는 잘 작동하지만 정적 라이브러리로 분리 될 때이 파일은 최종 응용 프로그램 바이너리로 만들지 않으므로 개인 클래스 인스턴스의 생성자가 포함되어 있습니다. '실행되면 문제가 발생합니다. 정적 라이브러리 빌드와 최종 애플리케이션 빌드 모두에 대한 Dead Stripping 등으로 수행 할 모든 빌드 옵션을 끄했습니다.

나는 얼마 전에 Metrowerks 컴파일러 에서이 문제를 해결했지만,이 경우 중간 라이브러리가없는 코드가 단일 애플리케이션에 내장 된 경우에도 발생했습니다. 솔루션은 매우 간단했습니다 __declspec(force_export) 개인 클래스 사례에서 모든 것이 좋습니다.

GCC/iPhone과 동등한 것이 있습니까? GCC 4.2와 iPhone OS 3.1을 대상으로 Xcode 3.1.4를 사용하고 있습니다. 또는 명시 적으로 참조되었는지 여부에 관계없이 정적 라이브러리의 모든 객체 파일에 링크 할 응용 프로그램을 알려주는 방법이 있습니까? 사용을 확인했습니다 ar 객체 파일의 전체 세트가 정적 라이브러리로 만들고 있습니다.

미리 감사드립니다.

도움이 되었습니까?

해결책

나는 당신이 찾고있는 옵션이 있다고 생각합니다 -all_load:

   -all_load
       Loads all members of static archive libraries.  See man ld(1) for
       more information.

다른 팁

-all_load 많은 라이브러리 및/또는 프레임 워크 (Mac OS X)를 연결하는 경우 몇 가지 문제가 있습니다. 이 경우 사용하여 특정 라이브러리의 모든 기호 만 강제로 만 강제해야합니다. -force_load:

g++ test.cpp -o test -force_load libtoload.a
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top