63

ドキュメントに従って、SUP.Asを使用してネイティブ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 開発は初めてです。

ありがとう。

4

4 に答える 4

43

Xcode 7 以降では、libz.dylib を追加する代わりに、次のようにする必要があります。

  • プロジェクトBuild Settingsタブに移動します
  • 検索するOther Linker Flags
  • -lzリンカー フラグとして追加(スクリーンショットを参照)
  • Productメニューで、Clean再度ビルドする前に選択します

lz リンク オプション

于 2015-12-08T22:35:59.177 に答える
19

アーキテクチャ 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. 追加ボタンをクリックします。
于 2014-09-15T11:32:25.880 に答える
12

1.目的のセクションに移動

2.ビルドフェーズタブ

3.バイナリをライブラリにリンクする

4.+ボタンをクリック

5.libz.tbd (または libz.dylib) を検索します。

6.追加ボタンをクリックします。

于 2016-03-18T09:10:26.920 に答える