アドネットワークのNendさんが、ついにアイコン広告をはじめるとのことで、何か素敵なキャンペーンがあるみたいです。 そこで、新しいアプリで早速このアイコン広告を導入することにしました。 ですが、Nendのフォルダをプロジェクトに追加したら、おかしなエラーが出て解消できなくなりました。
追記
11/12に解決致しました。 詳しくは、下記で説明しています。 大変ご迷惑をお掛けしました。
エラーの内容
Nendのフォルダをプロジェクトに加えたところ、変なエラーが出てどうにもいかなくなりました。 もし、同じようなエラーの場合は下記方法で解消してください。
Library not found for -lcurl
Library not found for -lcurl Linker command failed with exit code 1
これは、最初にプロジェクトを作成した時から気になっていたのですが、cocos2dxに最初からあるフレームワークで一つだけ赤字のものがありました。 それが、[libcurl.a]です。
これまで、何もエラーが出ていなかったのでほっておいたのですが、ここでリンクエラーが出ました。 解消方法は、これを削除することです。
これで「Library not found for -lcurl」のエラーが無くなります。
library not found for -lwebsockets
上記のエラーを解消すると、今度は同じようなエラーが出てきます。 今度は、[libwebsockets.a]にリンクができていないという内容です。
しかし、プロジェクトの[Target]にある「Linked Framework and Libraries」を見ると、[libwebsockets.a]をあります。
色々悩んだのですが、こちらのサイトを参考にしました。
cocos2dxのプロジェクトにある、[libwebsockets.a]へのSeachPathsが上手くいっていなかったことが、おそらくこのエラーの原因です。
上記画像にある「Library Search Paths」に、[libwebsockets.a]へのパスを設定してあげれば、エラーが消えました。
[c] /cocos2dxフォルダ名/external/libwebsockets/ios/lib [/c]
フォルダを移動させると別のエラーが出る
プロジェクトフォルダを動かさなければ、これ以上エラーは発生せず、Nend広告も表示できるようになります。 ただ、プロジェクトフォルダを別の場所に移動すると、また「Library not found for」のエラーが出ます。 今度は「Library not found for lNendAd」です。
雑感
このように、ライブラリーのエラーが続き、どうにもならなくなりました。 フォルダを動かさなければ良いと思うのですが、それでは根本的な解決になっていません。
cocos2dxのバージョンは2.2と2.13を試したのですが、どちらでも同じようになりました。 もし、よい解決方法があれば教えてください。 おそらく、リンクの問題だと思うのですが、ネットにも情報が載っていなかったのでお手上げ状態です。
追記 解決編
Nend(ファンコミュニケーションズ)さんに問い合わせをして無事解決できました。 解決方法を順に説明します。
Library not found for -lcurl
これに関しては、一度削除をして、改めて「-libcurl.a」を追加して、パスを設定しました。 このファイルは[cocos2dx]->[platform]=>[third_party]->[ios]->[libraries] の中にあります。 これを、プロジェクトのフレームワークの部分に追加をして、[Library Search Paths]でファイルパスを設定します。 [c]
"$(SRCROOT)/../../../cocos2dx/platform/third_party/ios/libraries/libcurl.a"
[/c]
library not found for -lwebsockets
パスを正しく設定しても、このエラーが出てきました。 これは、[Library Search Paths]がおかしいためにリンクが確認できないエラーです。 先ほどと同じように、[Library Search Paths]からファイルパスを設定します。 [c]
"$(SRCROOT)/../../../external/libwebsockets/ios/lib"
[/c]
フォルダを移動させると別のエラーが出る
これも同様に[Library Search Paths]を修正する必要があります。 おそらくNendAdフォルダに関してのエラーだと思います。NendAdフォルダを置いているパスを設定して下さい。 [c]
"$(SRCROOT)/../../../projects/"プロジェクト名"/proj.ios/NendAd
[/c]
これで、フォルダを別の場所に移動してもビルドできるようになりました。
追記 最後に
cocos2dxのプロジェクトを作成した時点で、ライブラリーのパスがおかしいためこのようなエラーが出ていました。 [create_project.py]を使ったプロジェクトの作成には注意が必要です。
詳しくはこちらcocos2d-xにおけるマルチプラットフォーム開発環境構築ツール | チラ裏開発メモ
まだアイコン広告は表示させていないのですが、おそらく大丈夫でしょう。 こちらに関しては、また別途ブログに書きたいと思います。