【cocos2dx】Nend広告のSDKを入れたらプロジェクトがおかしくなった。【解決しました】

【cocos2dx】Nend広告のSDKを入れたらプロジェクトがおかしくなった。【解決しました】
   

アドネットワークのNendさんが、ついにアイコン広告をはじめるとのことで、何か素敵なキャンペーンがあるみたいです。
そこで、新しいアプリで早速このアイコン広告を導入することにしました。
ですが、Nendのフォルダをプロジェクトに追加したら、おかしなエラーが出て解消できなくなりました。




追記

11/12に解決致しました。
詳しくは、下記で説明しています。
大変ご迷惑をお掛けしました。



エラーの内容

Nendのフォルダをプロジェクトに加えたところ、変なエラーが出てどうにもいかなくなりました。
もし、同じようなエラーの場合は下記方法で解消してください。

Library not found for -lcurl

Library not found for -lcurl
Linker command failed with exit code 1


2013-11-12-ffdsds


これは、最初にプロジェクトを作成した時から気になっていたのですが、cocos2dxに最初からあるフレームワークで一つだけ赤字のものがありました。
それが、[libcurl.a]です。

Library not found for -lcurl


これまで、何もエラーが出ていなかったのでほっておいたのですが、ここでリンクエラーが出ました。
解消方法は、これを削除することです。

これで「Library not found for -lcurl」のエラーが無くなります。

library not found for -lwebsockets

上記のエラーを解消すると、今度は同じようなエラーが出てきます。
今度は、[libwebsockets.a]にリンクができていないという内容です。

しかし、プロジェクトの[Target]にある「Linked Framework and Libraries」を見ると、[libwebsockets.a]をあります。

2013-11-12-ddsa


色々悩んだのですが、こちらのサイトを参考にしました。



cocos2dxのプロジェクトにある、[libwebsockets.a]へのSeachPathsが上手くいっていなかったことが、おそらくこのエラーの原因です。

2013-11-12-ffds


上記画像にある「Library Search Paths」に、[libwebsockets.a]へのパスを設定してあげれば、エラーが消えました。


/*cocos2dxフォルダ名*/external/libwebsockets/ios/lib



フォルダを移動させると別のエラーが出る

プロジェクトフォルダを動かさなければ、これ以上エラーは発生せず、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]でファイルパスを設定します。

"$(SRCROOT)/../../../cocos2dx/platform/third_party/ios/libraries/libcurl.a"


library not found for -lwebsockets

パスを正しく設定しても、このエラーが出てきました。
これは、[Library Search Paths]がおかしいためにリンクが確認できないエラーです。
先ほどと同じように、[Library Search Paths]からファイルパスを設定します。

"$(SRCROOT)/../../../external/libwebsockets/ios/lib"



フォルダを移動させると別のエラーが出る

これも同様に[Library Search Paths]を修正する必要があります。
おそらくNendAdフォルダに関してのエラーだと思います。NendAdフォルダを置いているパスを設定して下さい。


"$(SRCROOT)/../../../projects/"プロジェクト名"/proj.ios/NendAd


これで、フォルダを別の場所に移動してもビルドできるようになりました。

追記 最後に

cocos2dxのプロジェクトを作成した時点で、ライブラリーのパスがおかしいためこのようなエラーが出ていました。
[create_project.py]を使ったプロジェクトの作成には注意が必要です。

詳しくはこちらcocos2d-xにおけるマルチプラットフォーム開発環境構築ツール | チラ裏開発メモ

まだアイコン広告は表示させていないのですが、おそらく大丈夫でしょう。
こちらに関しては、また別途ブログに書きたいと思います。

Related Posts Plugin for WordPress, Blogger...