2009-10-10 2 views
0

나는 라이브러리를 만들었으므로 이제 응용 프로그램에서 활용하고 싶습니다. 나는 내가 도서관에 제대로 링크되어 있다고 믿는다. 여기에 내가했던 모든 일들은 다음과 같습니다iPhone : 응용 프로그램에서 정적 라이브러리를 사용하면 장치가 충돌하지만 iphone 시뮬레이터는 작동하지 않습니다.

  • 헤더 검색 경로를
  • 설정 다른 링커 플래그을 "-ObjC"
  • 추가 정적 라이브러리 Xcode 프로젝트 lib 디렉토리 확인했다
  • . 나는 정적 리와 함께 응용 프로그램을 실행, 내가 제목에서 말했듯이 직접 의존

로 라이브러리를 추가하는 프레임 워크 목표

  • 으로 성공적으로 한 상장되었습니다 시뮬레이터에서 brary.

    *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** +[NSDate firstOfCurrentMonth]: unrecognized selector sent to class 0x3841bb44' 
    2009-10-10 12:45:31.159 Basement[2372:207] Stack: 
    
  • 답변

    2

    이 현재 SDK 링커의 버그로 인해 : 나는 장치를 사용하여 응용 프로그램을 테스트하려고하면, 그것은 라이브러리에서 함수를 사용하는 두 번째 충돌합니다. 문제 및 가능한 해결 방법에 대한 자세한 정보는 this post을 참조하십시오.

    업데이트 (. 또한 this post 참조) : 당신이 시도 할 수

    또 다른 한가지는 정적 라이브러리를 제거하는 것입니다 및 응용 프로그램의 프로젝트에 직접 라이브러리의 소스 파일이 포함됩니다. 나는 비슷한 정적 라이브러리 문제를 마주하고 있었고, 그것이 성공적으로 실행되도록하기 위해 다시 떨어지는 결과를 낳았다. 그게 효과적이라면 (해결할 수있는 총체적 인 방법 일 수도있다) 그럼 분명히 링커 문제 일 것이다.

    +0

    나는 그것을 시험해 보지 않았다. 나는 그것을 응용 프로그램에 추가 한 다음 라이브러리에 추가했다. – devinross

    +1

    두 번째 링크에서 설명한 것처럼 빌드 설정의 기타 링커 플래그에 "-all_load"옵션을 추가하여 정적 라이브러리에서 카테고리를 적절히 연결해야 할 수도 있습니다. 이것은 iPhone OS 3.0 SDK의 알려진 문제점입니다. –

    0

    최근에이 문제가 발생했습니다. 나는 일한 --all_load를 얻을 수 없었고, 나는 다른 카테고리에서 일을했다는 것을 알았을 때. 나는이 범주에 대해 게으르다가 다른 파일을 포함시켰다.

    결국 더미 클래스 (메서드, 인스턴스 변수 없음)를 만들고 더미 클래스의 .m 파일에 내 범주의 구현을 포함 시켰습니다. 이 작업을 수행 한 후 -all_load 플래그를 제거한 후에도 내 범주가 작동하기 시작했습니다.

    이것은 iPhone OS 3.1.3에있었습니다.

    이것은 확실히 올바른 해결 방법이 아니지만 작동하는 것으로 보입니다.

    전체 샘플 코드는 내 blog에 해당합니다.