development

아키텍처 i386에 대한 정의되지 않은 기호 : libMo.a의 PlatCompress (enumCompressOperation, CompressCookie *, void *, long)에서 참조 된 "_deflate"

big-blog 2020. 12. 27. 20:38
반응형

아키텍처 i386에 대한 정의되지 않은 기호 : libMo.a의 PlatCompress (enumCompressOperation, CompressCookie *, void *, long)에서 참조 된 "_deflate"


문서에 따라 SUP를 사용하여 기본 iOS 애플리케이션을 수행하고 있습니다. 라이브러리를 포함하고 Xcode에 링크 경로를 제공했습니다. 빌드하는 동안 다음 오류가 발생합니다.

Undefined symbols for architecture i386:
  "_deflate", referenced from:
      PlatCompress(enumCompressOperation, CompressCookie*, void*, long) in         libMo.a(tlplatcompress.o)
  "_deflateEnd", referenced from:
      PlatCompress(enumCompressOperation, CompressCookie*, void*, long) in libMo.a(tlplatcompress.o)
  "_deflateInit_", referenced from:
      StartCompression(enumCompressOperation, unsigned char, long (*)(void*, void*, long), void*, void**) in libMo.a(tlplatcompress.o)
  "_deflateParams", referenced from:
      StartCompression(enumCompressOperation, unsigned char, long (*)(void*, void*, long), void*, void**) in libMo.a(tlplatcompress.o)
  "_inflate", referenced from:
      PlatCompress(enumCompressOperation, CompressCookie*, void*, long) in libMo.a(tlplatcompress.o)
  "_inflateEnd", referenced from:
      PlatCompress(enumCompressOperation, CompressCookie*, void*, long) in libMo.a(tlplatcompress.o)
  "_inflateInit_", referenced from:
      StartCompression(enumCompressOperation, unsigned char, long (*)(void*, void*,  long), void*, void**) in libMo.a(tlplatcompress.o)
ld: symbol(s) not found for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)

이 오류를 해결하는 방법을 도와주세요. SUP를 사용하는 네이티브 iOS 개발이 처음입니다.

감사.


나는 또한 같은 오류가 있었다.

대상-> 빌드 단계 탭-> 라이브러리와 바이너리 연결에서 libz.dylib 를 프레임 워크에 추가합니다 .

그것이 당신을 위해 일하기를 바랍니다.

참고 : libz.dylib 를 찾을 수없는 경우 libz.tbd를 추가해 보십시오.


Xcode 7부터 libz.dylib를 추가하는 대신 다음을 수행해야합니다.

  • 프로젝트 Build Settings탭으로 이동
  • 검색 Other Linker Flags
  • -lz링커 플래그로 추가 (스크린 샷 참조)
  • 에서 Product메뉴 선택 Clean을 다시 제작하기 전에

lz 링크 옵션


아키텍처 i386의 정의되지 않은 기호 :

  "_deflate", referenced from:
      PlatCompress(enumCompressOperation, CompressCookie*, void*, long) in         libMo.a(tlplatcompress.o)
  "_deflateEnd", referenced from:
      PlatCompress(enumCompressOperation, CompressCookie*, void*, long) in libMo.a(tlplatcompress.o)
  "_deflateInit_", referenced from:
      StartCompression(enumCompressOperation, unsigned char, long (*)(void*, void*, long), void*, void**) in libMo.a(tlplatcompress.o)
  "_deflateParams", referenced from:
      StartCompression(enumCompressOperation, unsigned char, long (*)(void*, void*, long), void*, void**) in libMo.a(tlplatcompress.o)
  "_inflate", referenced from:
      PlatCompress(enumCompressOperation, CompressCookie*, void*, long) in libMo.a(tlplatcompress.o)
  "_inflateEnd", referenced from:
      PlatCompress(enumCompressOperation, CompressCookie*, void*, long) in libMo.a(tlplatcompress.o)
  "_inflateInit_", referenced from:
      StartCompression(enumCompressOperation, unsigned char, long (*)(void*, void*,  long), void*, void**) in libMo.a(tlplatcompress.o)
ld: symbol(s) not found for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)

나도 같은 문제가 있었는데 libz.dylib 라이브러리를 포함하지 않은 것 같습니다 .

그렇게하려면 :

  1. 타겟 섹션으로 이동
  2. 빌드 단계 탭
  3. 바이너리를 라이브러리와 연결
  4. + 버튼을 클릭
  5. libz.dylib 검색
  6. 추가 버튼을 클릭하십시오.

1. 대상 섹션으로 이동

2. Build Phases 탭

3. 라이브러리와 바이너리 연결

4. + 버튼을 클릭

5. libz.tbd (또는 libz.dylib) 검색

6. 추가 버튼을 클릭합니다.

참조 URL : https://stackoverflow.com/questions/18053546/undefined-symbols-for-architecture-i386-deflate-referenced-from-platcompres

반응형