linker command failed with exit code 1
同じ名前のクラス、変数、メソッドなどが使われている場合に発生します。変数、メソッドの場合はソース編集中に警告が出るので悩まされることはあまりないと思いますが、クラスの場合はビルドするとエラーが出ます。
ちなみに今回はcocos2dxを利用して以下処理を入れようとしたら発生
処理の流れ
1.Cocos2d-X上でスクリーンショットを撮って、ファイルに保存
↓
2.保存したファイルのパスを取得して、ネイティブに渡す
↓
3.ネイティブはパスから画像を取得し、ツイートする
(参考はこちら)http://d.hatena.ne.jp/okahiro_p/20130807/1375881600
ここでビルド時にエラーが出た。
どうやらandroidのファイルもxcode上のコンパイルに入っていることが要因
Build Phases から Compile Sources から
android用のファイルを外すことで、無事回避できた。
■該当ファイル
NativeCodeLauncher.cpp
単純な話だが勉強になりましたのでメモ
2014年1月23日木曜日
Property 'viewcontroller' refers to an incomplete Objective-C class 'RootViewController' with no @interface(available)
Property 'viewcontroller' refers to an incomplete Objective-C class 'RootViewController' with no @interface(available)
本件のエラーが出た際の対応としては
該当のヘッダファイルに
@property(nonatomic, assign) RootViewController *viewController;
そして.mmファイル側にも
@synthesize viewController;
を追加する必要がある。
そうすればエラーは消える、忘れがちなのでメモ
本件のエラーが出た際の対応としては
該当のヘッダファイルに
@property(nonatomic, assign) RootViewController *viewController;
そして.mmファイル側にも
@synthesize viewController;
を追加する必要がある。
そうすればエラーは消える、忘れがちなのでメモ
2014年1月22日水曜日
time_t time の注意事項
なぜか
func (time_t time)
とメンバ関数を定義した後に、その関数内のロジックにて
time(&now)
と記載するとxcodeにてエラーになる
Called object type 'time_t' (aka 'long') is not a function or function pointer
どうやら関数内で定義した故のよう
備忘録のためメモ
func (time_t time)
とメンバ関数を定義した後に、その関数内のロジックにて
time(&now)
と記載するとxcodeにてエラーになる
Called object type 'time_t' (aka 'long') is not a function or function pointer
どうやら関数内で定義した故のよう
備忘録のためメモ
2014年1月11日土曜日
"This bundle is invalid. when supporting iPhone, the executable must include support for armv6 architecture, unless the UIRequireDeviceCapabilities include the 'armv7' capability."
iOSを配布する際に少しはまったこと
"This bundle is invalid. when supporting iPhone, the executable must include support for armv6 architecture, unless the UIRequireDeviceCapabilities include the 'armv7' capability."
上記ログがvalidateする時に出た際には
Build Settings の iOS Deployment Target をiOS4.3以上にしなければならない
参考URLはこちら
"This bundle is invalid. when supporting iPhone, the executable must include support for armv6 architecture, unless the UIRequireDeviceCapabilities include the 'armv7' capability."
上記ログがvalidateする時に出た際には
Build Settings の iOS Deployment Target をiOS4.3以上にしなければならない
参考URLはこちら
2014年1月9日木曜日
iOSにadmobを掲載する際に忘れがちなことBuild Phasesの設定
Build Phases→Link Binary with Libraries
ここにcocos2dxのフォルダにある
/cocos2d-x-2.2/cocos2dx/platform/third_party/ios/libraries/libcurl.a
/cocos2d-x-2.2/external/libwebsockets/ios/lib/libwebsockets.a
を追加する必要あり
忘れてめんどいこと多いので、メモ
ここにcocos2dxのフォルダにある
/cocos2d-x-2.2/cocos2dx/platform/third_party/ios/libraries/libcurl.a
/cocos2d-x-2.2/external/libwebsockets/ios/lib/libwebsockets.a
を追加する必要あり
忘れてめんどいこと多いので、メモ
2014年1月8日水曜日
iOSをリリースするまでの手順
非常にわかりやすいサイトがありましたので備忘録として
URLを残しておきます
http://dev.classmethod.jp/smartphone/iphone/ios-app-how-to-release/#toc--provisioning-profile-
http://www.raywenderlich.com/ja/44098/%E3%82%A2%E3%83%97%E3%83%AA%E3%82%92apple%E3%81%AB%E7%94%B3%E8%AB%8B%E3%81%99%E3%82%8B%E6%89%8B%E9%A0%86-%E3%82%A2%E3%82%AB%E3%82%A6%E3%83%B3%E3%83%88%E3%81%AE%E4%BD%9C%E6%88%90%E3%81%8B%E3%82%89
http://www.raywenderlich.com/ja/44102/%E3%82%A2%E3%83%97%E3%83%AA%E3%82%92apple%E3%81%AB%E7%94%B3%E8%AB%8B%E3%81%99%E3%82%8B%E6%89%8B%E9%A0%86-%E3%82%A2%E3%82%AB%E3%82%A6%E3%83%B3%E3%83%88%E3%81%AE%E4%BD%9C%E6%88%90%E3%81%8B%E3%82%89-2
URLを残しておきます
http://dev.classmethod.jp/smartphone/iphone/ios-app-how-to-release/#toc--provisioning-profile-
http://www.raywenderlich.com/ja/44098/%E3%82%A2%E3%83%97%E3%83%AA%E3%82%92apple%E3%81%AB%E7%94%B3%E8%AB%8B%E3%81%99%E3%82%8B%E6%89%8B%E9%A0%86-%E3%82%A2%E3%82%AB%E3%82%A6%E3%83%B3%E3%83%88%E3%81%AE%E4%BD%9C%E6%88%90%E3%81%8B%E3%82%89
http://www.raywenderlich.com/ja/44102/%E3%82%A2%E3%83%97%E3%83%AA%E3%82%92apple%E3%81%AB%E7%94%B3%E8%AB%8B%E3%81%99%E3%82%8B%E6%89%8B%E9%A0%86-%E3%82%A2%E3%82%AB%E3%82%A6%E3%83%B3%E3%83%88%E3%81%AE%E4%BD%9C%E6%88%90%E3%81%8B%E3%82%89-2
2014年1月6日月曜日
iPhone アプリをローカライズするまでの手順をメモ
以下サイトより転機させて頂きました。
http://lab.dolice.net/blog/2013/04/17/xcode-localize/
iPhoneアプリをローカライズするまでの全スクリーンショット
iOSアプリをローカライズするまでの全スクリーンショットに手順を添えて紹介します。
下記にサンプルを用意しました。スクリーンショットも同梱しています。
サンプルダウンロード
スクリーンショットとローカライズ手順
1. PROJECT -> info -> Localizationsの項目に Japaniese (ja)を追加する
2. MainStoryboard.storyboardと InfoPlist.stringsにチェックを入れて Finishを選択
3. MainStoryboardが複製され、Japanieseと Englishの2つに分かれました
4. Strings Filesを新規作成します
5. ファイル名を「Localizable.strings」にします
6. 作成した Localizable.stringsファイルを選択し、「Localize…」ボタンを押します
7. Englishと Japanieseの両方にチェックを入れます
8. Localizable.stringsファイルに各国の単語を定義します
9. アプリ名とアプリアイコンの下に表示される名前を指定することも出来ます
10. 「NSLocalizedStrings」にキーワードを指定すると、各国語に対応した単語が表示されます
ソースコード
1 2 3 4 |
|
出力結果
システム言語を英語に設定していた場合
My Apps
システム言語を日本語に設定していた場合
マイアプリ
2014年1月5日日曜日
「月の満ち欠け」アプリの配信地域を増やしてみました
月の満ち欠けアプリは英語対応もしていたために、配信地域に公用語が英語の地域を増やしてみました。
気になるマーケティングデータがありましたら、公開しますので、
乞うご期待ください。
■アプリ名
月の満ち欠け〜本日の月は?〜
■価格
無料
気になるマーケティングデータがありましたら、公開しますので、
乞うご期待ください。
■アプリ名
月の満ち欠け〜本日の月は?〜
■価格
無料
cocos2d-xにおけるローカライズ(多言語対応)方法 CCLocalizedString2
Android.mkの追記方法は以下が正解だった。
こうしないとそもそも動かない
こうしないとそもそも動かない
LOCAL_SRC_FILES := hellocpp/main.cpp \
../../../../cocos2dx/platform/CCLocalizedString.cpp
2014年1月3日金曜日
cocos2d-xにおけるローカライズ(多言語対応)方法 CCLocalizedString
明日試してみたいと思うが以下メモを転機させて頂きました。
CCLocalizedString
(今更ですが)ローカライズのときに便利なCCLocalizedString関数を紹介します。iOSではNSLocalizedStringがありましたが、cocos2d-xには存在しません。そこで小 苏氏がCCLocalizedString関数を公開してくれているので、感謝しつつこれを利用しましょう。
ファイルはこちらからダウンロードできます。
http://www.cocos2d-x.org/boards/18/topics/14981?r=15087#message-15087
しかし、最新バージョン(cocos2d-x 2.1.2)で利用するにはソースを編集しなければいけないので、導入手順も含めご紹介します。動作確認はiOSとAndroidで行っています。なお利用方法はNSLocalizedStringと同じです。
ファイルはこちらからダウンロードできます。
http://www.cocos2d-x.org/boards/18/topics/14981?r=15087#message-15087
しかし、最新バージョン(cocos2d-x 2.1.2)で利用するにはソースを編集しなければいけないので、導入手順も含めご紹介します。動作確認はiOSとAndroidで行っています。なお利用方法はNSLocalizedStringと同じです。
導入手順
- CCLocalizedString.cppの変更箇所は3ヶ所あります。
14行目 「cocoa/」を追加します。
1
| #include "cocoa/CCString.h" |
30行目 getCurrentLanguage関数の呼び出し方法変更
1
| ccLanguageType curLanguage = CCApplication::sharedApplication()->getCurrentLanguage(); |
57行目 fullPathForFilename関数へ変更
1
| fullPath = CCFileUtils::sharedFileUtils()->fullPathForFilename( fileName ); |
- ソースの配置
CCLocalizedString.h/.cppを
cocos2d-2.1rc0-x-2.1.2/cocos2dx/platform
へ配置します。
cocos2d-2.1rc0-x-2.1.2/cocos2dx/platform
へ配置します。
- cocos2d.hの編集
cocos2d-2.1rc0-x-2.1.2/cocos2dx/include/cocos2d.h
に
に
1
| #include "platform/CCLocalizedString.h" |
を追記します。
- プロジェクトへの取り込み
- Androidの場合
cocos2d-2.1rc0-x-2.1.2/cocos2dx/Android.mk
上記ファイルにて、「LOCAL_SRC_FILES」に対して「platform/CCLocalizedString.cpp」を追加します。
上記ファイルにて、「LOCAL_SRC_FILES」に対して「platform/CCLocalizedString.cpp」を追加します。
1
2
| LOCAL_SRC_FILES := \ platform/CCLocalizedString.cpp \ |
- iOSの場合
Xcode上で、cocos2dxプロジェクトにCCLocalizedString.h/.cppを取り込みます。
利用方法
- CCLocalizedString.cppの修正
32行目よりローカライズの言語設定を行います。例えば、英語と日本語(デフォルト英語)に対応するのであれば、次のようにすれば良いでしょう。
1
2
3
4
5
6
7
8
| switch (curLanguage) { case kLanguageJapanese: fileName = "Localized_ja" ; break ; default : fileName = "Localized_en" ; break ; } |
- ローカライズ用のファイルを作成する
1. で設定したファイル名のファイルを、Resourcesディレクトリに配置します。上記の場合は、
- Localized_en
- Localized_ja
を用意します。
ファイルの中身は
(キー) = “(表示する文字列)”;
の形式で記述します。例えば、キーが「HELLO」表示する文字列が「ハローワールド」の場合、
ファイルの中身は
(キー) = “(表示する文字列)”;
の形式で記述します。例えば、キーが「HELLO」表示する文字列が「ハローワールド」の場合、
1
| HELLO = "ハローワールド" ; |
とします。
- ローカライズが必要な箇所にてCCLocalizedString関数を利用する。
CCLocalizedString関数の第1引数はキー、第2引数はコメントとなっています。NSLocalizedStringと同じですね。
1
2
| string hoge = CCLocalizedString( "HELLO" , NULL); string fuga = CCLocalizedString( "HELLO" , "はろーわーるど" ); |
ただ毎回CCLocalizedStringと書くのは面倒なので、マクロ定義しておけば良いでしょう。
1
| #define CCLS(key) CCLocalizedString(key, NULL) |
すると、ソースがスッキリします。
1
| string hoge = CCLS( "HELLO" ); |
- アプリの実行
This entry was posted by ともあき on 2013年4月5日 at 3:09 PM under cocos2d-2.1rc0-x-2.1.2. You can leave a response, or trackback from your own site. Follow any responses to this entry through the RSS 2.0 feed.
登録:
投稿 (Atom)