iOSでzlibをインポートする際のエラー:シンボルが見つかりませんcollect2:ld
質問
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
他のヒント
プロジェクトにlibzを追加します。これを行うには、Xcodeで次の手順を実行します。
- プロジェクトを開き、プロジェクトターゲットを選択して、ツールバーの青いプロジェクト情報アイコンをクリックします(または<!>#8984; Iを押します)
- 画面の左下隅にある[+]ボタンをクリックしてライブラリを追加し、ライブラリリストの一番下までスクロールして、libz.dylibを選択します。 [追加]ボタンをクリックします。
- 追加をクリックすると、リンクされたライブラリのリストにライブラリ名が表示されます。これで、リンクエラーなしでプロジェクトをビルドできるようになります。
この同じ方法を使用して、リストからライブラリを追加できます。ライブラリがリストに表示されない場合は、標準のiPhone SDKの一部ではないことがわかっているため、ソリューションを再考するか、ライブラリを静的にビルドして、ターゲットを(可能であれば)リンクする必要がある場合があります。
所属していません StackOverflow