在Xcode下编译cocos2d-x语言为lua时出错的解决方案

时间:2023-02-08 16:41:36

在解决的时候是看了这两个网址的文章才帮助我解决了问题的:1.http://www.cocoachina.com/bbs/read.php?tid=281157 2.http://blog.csdn.net/dragoncheng/article/details/43482109


首先通过在终端输入 cocos new -d 工程路径 -l lua -p 包名 工程名 例如:cocos new -d /Users/zcx/Desktop/workspace -l lua -p com.my.game myLua 

就可以创建一个支持Lua的cocos2d-x工程。

然后在打开工程编译的时候会报如下的错

Undefined symbols for architecture x86_64:

  "_luaL_addlstring", referenced from:

等等一系列类似的错误共78条。

其中有两条错误是在AppDelegate.cpp中添加如下代码即可解决了:

extern "C"

{  

#if defined (__unix) || (CC_TARGET_PLATFORM == CC_PLATFORM_IOS)

#ifndef __ENABLE_COMPATIBILITY_WITH_UNIX_2003__

#define __ENABLE_COMPATIBILITY_WITH_UNIX_2003__

#include <stdio.h>

#include <dirent.h>

    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);

    }


    DIR *opendir$INODE64(constchar * a)

    {

       return opendir(a);

    }


   struct dirent *readdir$INODE64(DIR *dir)

    {

       return readdir(dir);

    }

#endif

#endif

}


接下来解决最蛋疼的问题,第一步进入开头提到的第二个网址,在一楼有个附件下载,下载下来之后进入到如下的目录:

工程名/frameworks/cocos2d-x/external/lua/luajit,里面有3个.sh文件和3个文件夹,将其中的build_ios.sh替换为下载下来的文件夹中的同名文件,然后运行它(直接拖到mac的终端里去,回车,等一下就好),下载下来文件夹中的其他文件也全都放在luajit下。

至此,应该就可以打开cocos2d-x的示例工程了。

不过在我之前解决这个问题的时候还并没有完成,会在auto engine =LuaEngine::getInstance()这句话的时候报错,而在写这篇记录帖的时候却没有报这个错,所以我还是把之前的步骤也写进来,以防发生同样的问题。一个是在下图的位置:

在Xcode下编译cocos2d-x语言为lua时出错的解决方案

右击那个external文件夹,选择Add Files To “cocos2d_lua_bings.xcodeproj” 选项,将工程名/frameworks/cocos2d-x/external/lua/lua添加进来,添加的时候,别忘记在Add to targets更改一下选项,默认是在mac上打勾的,我选择了在iOS上打勾。

还有最后一步,是参照了开头的第一个网址,其实第二个网址中也有提到,但是像我这样的初学者不太明白到底是怎么样改,在看了第一个网址中内容才明白的。在Xcode下编译cocos2d-x语言为lua时出错的解决方案

在上图中选择cocos2d_lua_bingings.xcodeproj然后选择中间的luabingdings iOS然后选择右侧上方的Build Settings搜索框中输入other linker,更改Debug下的iphonesimulator7.1SDK和Release下的phonesimulator7.1SDK的参数,和下面一样就可以了在Xcode下编译cocos2d-x语言为lua时出错的解决方案

至此大功告成了,至少我可以了,哈哈。对了,忘记说的,我的Xcode版本是6.4 cocos2d-x版本是3.0,其他版本的我也不知道是否可行。