iOSでzlibをインポートする際のエラー:シンボルが見つかりませんcollect2:ld

StackOverflow https://stackoverflow.com/questions/289274

  •  08-07-2019
  •  | 
  •  

質問

iPhoneアプリケーションに<zlib.h>を含めました。ソースコードには、Brad Larsonが提供するMoleculesのサンプルコードをモックアップしていましたが、プロジェクトをビルドすると、次のエラーが返されます。これがライブラリリンクの問題なのか、それとも何か他のものが不足しているのかを誰かが指摘できますか?

"_deflate", referenced from: -[NSData(Gzip) gzipDeflate] in NSData+Gzip.o "_inflateEnd", 
referenced from: -[NSData(Gzip) initWithGzippedData:] in NSData+Gzip.o "inflateInit2", 
referenced from: -[NSData(Gzip) initWithGzippedData:] in NSData+Gzip.o "_inflate", 
referenced from: -[NSData(Gzip) initWithGzippedData:] in NSData+Gzip.o "_deflateEnd", 
referenced from: -[NSData(Gzip) gzipDeflate] in NSData+Gzip.o "deflateInit2", referenced 
from: -[NSData(Gzip) gzipDeflate] in NSData+Gzip.o ld: symbol(s) not found collect2: ld 
returned 1 exit status
役に立ちましたか?

解決

ターゲットのBuild Settingsタブで、Other Linker Flagsセクションまでスクロールし、フィールドに-lzがあることを確認します。これにより、組み込みのzlibにリンクされ、エラーがなくなるはずです。

リンカーフラグを変更した後、再度ビルドする前に、CleanメニューからProductを選択する必要があります。

 lzスクリーンショット

他のヒント

プロジェクトにlibzを追加します。これを行うには、Xcodeで次の手順を実行します。

  1. プロジェクトを開き、プロジェクトターゲットを選択して、ツールバーの青いプロジェクト情報アイコンをクリックします(または<!>#8984; Iを押します)
    例1
  2. 画面の左下隅にある[+]ボタンをクリックしてライブラリを追加し、ライブラリリストの一番下までスクロールして、libz.dylibを選択します。 [追加]ボタンをクリックします。
    例2
  3. 追加をクリックすると、リンクされたライブラリのリストにライブラリ名が表示されます。これで、リンクエラーなしでプロジェクトをビルドできるようになります。
    例3

この同じ方法を使用して、リストからライブラリを追加できます。ライブラリがリストに表示されない場合は、標準のiPhone SDKの一部ではないことがわかっているため、ソリューションを再考するか、ライブラリを静的にビルドして、ターゲットを(可能であれば)リンクする必要がある場合があります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top