古い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