Cocos2dx -- 入门之c++ 调用lua

Cocos2dx -- 入门之c++ 调用lua,第1张

概述首先配置环境 1.先去下载一个lua源文件:http://www.lua.org 2.在Xcode中新建一个控制台应用程序,取名CppCLua 3.将第一步下载下来的文件解压,在终端中进入到解压目录下,输入make macosx,这样便可以生成Mac下面的lib文件。 4.接下来把刚刚解压缩的文件夹拷贝到你新建的工程下面,然后设置include路径和library路径。(注意,这里是不需要把头文件 首先配置环境

1.先去下载一个lua源文件:http://www.lua.org

2.在Xcode中新建一个控制台应用程序,取名CppCLua

3.将第一步下载下来的文件解压,在终端中进入到解压目录下,输入make macosx,这样便可以生成Mac下面的lib文件。

4.接下来把刚刚解压缩的文件夹拷贝到你新建的工程下面,然后设置include路径和library路径。(注意,这里是不需要把头文件添加到Xcode里面的,只要指定include路径,编译的时候,编译器会自动去找的。)

因为我的Lua文件夹的路径是:

xxxx/CppCLua/lua-5.3.2,所以,我把search path和library path都别设置为:

$(SRCROOT)/CppCLua/lua-5.3.2/src

注意:如果直接添加lua的所有源码,则会编译报错。因为lua.c里面也有一个main函数。这个main函数是用来生成可执行程序的。 另外,如果是添加其它第三方的库,也可以参考这个方法,添加search path和library path

5.打开main.cpp,并包含以下头文件:

#include "lua.hpp"

如果此时编译不报错,则说明你之前设置的search path是正确的,如果报错,请自行调整search path。

跳转可以查看lua.hpp的内容,如下:

extern "C" {#include "lua.h"#include "lualib.h"#include "lauxlib.h"}

就是大多数Lua教程里的代码嘛。

6.在main.cpp里面添加以下内容:

#include "lua.hpp"int foo(lua_State *L){    int n = lua_tonumber(L,1);    lua_pushnumber(L,n + 1);    return 1;}int main(int argc,const char * argv[]) {    // 初始化lua虚拟机    // 今后其他所有Lua API函数的调用都需要此指针作为第一参数,用来指定某个虚拟机。    lua_State * l = luaL_newstate();    // 把所有标准类库加载到指定的虚拟机    luaL_openlibs(l);    // 把函数压入lua的栈,然后设置为全局变量,这样lua就可以调用它了。    // 第二个参数是lua调用使用的函数名    lua_register(l,"foo",foo);    // 执行lua文件    luaL_dofile(l,"hello.lua");    //销毁指定虚拟机的所有对像    lua_close(l);    return 0;}

7.新建lua脚本:选择New->file->Other,然后命名为hello.lua, 以下是hello.lua里面的内容:

print(foo(100))

8.编译并运行

此时编译并运行,这时可能看不到控制台输出结果。因为你的Lua脚本没有拷贝到程序里面去,我们需要再设置一下。如下图所示: (注意:subpath要清空,copy only when installing去掉打勾)

编译并运行,运气好可以正常运行了输出结果

但是也可能报出了一大堆错误:

解决办法:

在Build Phases -> link Binary With librarIEs添加 liblua.a 文件,在你的lua文件夹下的src目录下:

最后工程目录如下:

编译运行,最后成功了,你已经掌握了第一课 使用C++调用lua。

下一课使用lua调用C++。

总结

以上是内存溢出为你收集整理的Cocos2dx -- 入门之c++ 调用lua全部内容,希望文章能够帮你解决Cocos2dx -- 入门之c++ 调用lua所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1078397.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-27
下一篇 2022-05-27

发表评论

登录后才能评论

评论列表(0条)

保存