忍者ブログ
  • 2024.04
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 2024.06
[PR]
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

【2024/05/19 06:15 】 |
シミュレータ向けビルド時にエラー
古いcocos2dで(3.3以前くらい)ビルドしたとき、以下のようなエラーが出るときがある。



つまり、
fputs$UNIX2003()
という関数がない、というのだ。($以降も含めて関数名。そんな付け方できたのか)

探してみると、自分で定義を追加すればいいというブログがある。
参考

使っているのは、CCImage.hらしい。
(このあたり、実装した人が勝手気ままにいろいろ外部関数を使っている感じがするのがcocos2dらしい)


で、当のCCImage.hファイルを探してみる。

cocos/platform/CCImage.h
cocos/platform/CCImage.cpp

にある。
でも見てみると、cppのほうにすでにそれっぽい実装がしてある(cocos2d バージョン3.2)


extern "C"
{
// To resolve link error when building 32bits with Xcode 6.
// More information please refer to the discussion in https://github.com/cocos2d/cocos2d-x/pull/6986
#if defined(__APPLE__) || defined(__unix)
#ifndef __ENABLE_COMPATIBILITY_WITH_UNIX_2003__
#define __ENABLE_COMPATIBILITY_WITH_UNIX_2003__
#include
FILE *fopen$UNIX2003( const char *filename, const char *mode )
{
return fopen(filename, mode);
}
size_t fwrite$UNIX2003( const void *a, size_t b, size_t c, FILE *d )
{
return fwrite(a, b, c, d);
}
char *strerror$UNIX2003( int errnum )
{
return strerror(errnum);
}

#endif
#endif



なので、この後ろにfputsを追加


int fputs$UNIX2003(const char *res1, FILE *res2)
{
return fputs(res1,res2);
}




これで動いた。


PR
【2015/10/05 17:36 】 | cocos2d-x | 有り難いご意見(0)
<<GameCenterの実装 | ホーム | QuadCommandでエラーのとき>>
有り難いご意見
貴重なご意見の投稿














<<前ページ | ホーム | 次ページ>>