美文网首页cocos2d-Lua
c++如何调用lua函数

c++如何调用lua函数

作者: 最怕认真 | 来源:发表于2016-09-13 16:08 被阅读116次
#ifndef CLIENT_WFQ
#define CLIENT_WFQ

#include <string>
#include "base/CCRef.h"


class TcpSocket;
class Stream;
class ReadBuf;
class Client:public cocos2d::Ref
{
private:
    TcpSocket * tcpSocket;
    int _connectedCallback;
    int _proxyReturnCallback;
public:
    static Client* create();
    void start(std::string ip,int port);
    void send(Stream * stream);
    void recv();
    void update(float t);
    void onConnected();
    void registerConnectedCallback(int handler);
    void onProxyReturn(ReadBuf * buf);
    void registerProxyReturnCallback(int handler);
};

#endif

对于函数
void registerConnectedCallback(int handler);
传入的是一个lua函数,如果按照正常的方法生成c++和lua的绑定文件,会报错,说类型不正确
找到绑定文件的
int lua_cocos2dx_custom_client_Client_registerConnectedCallback(lua_State* tolua_S)
将类型判断注释掉,并且手动转为函数类型LUA_FUNCTION
需要添加头文件
CCLuaValue.h

   argc = lua_gettop(tolua_S)-1;
    if (argc == 1) 
    {
        int arg0;

        
        /*ok &= luaval_to_int32(tolua_S, 2,(int *)&arg0, "Client:registerConnectedCallback");
        if(!ok)
        {
            tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_custom_client_Client_registerConnectedCallback'", nullptr);
            return 0;
        }*/
        LUA_FUNCTION handler =  toluafix_ref_function(tolua_S,2,0);
        cobj->registerConnectedCallback(handler);
        lua_settop(tolua_S, 1);
        return 1;
    }

对于函数
toluafix_ref_function
具体的参数意义暂时没搞清楚,之后再探究竟
toluafix_ref_function(tolua_S,2,0);这里的参数是不用变的,都是2,0这样

相关文章

  • lua调用c++中的函数(使用LuaBridge)

    前面一节简述描写了如何在c++中调用lua函数,这节简述描写如何在lua中调用c++中的函数,还是使用前一节的工程...

  • 三、Lua调用C++函数

    上一篇文章中我们已经知道了,C++怎么调用Lua中的函数,接下来我们学习一下,Lua怎么调用C++中的函数。 这篇...

  • Lua绑定流程

    绑定是为了实现将C++代码注册到lua环境,使得lua可以调用C++函数。https://blog.csdn.ne...

  • C++调用lua方式

    目标 使用C++调用lua接口 示例 lua代码(test.lua) C++调用示例(lua_test.cpp) ...

  • c++如何调用lua函数

    对于函数void registerConnectedCallback(int handler);传入的是一个lua...

  • Lua与C++如何相互交互?

    Lua与C++如何相互交互 通过lua虚拟栈隔离Lua和C/C++类型和彼此内存的差异来实现数据及函数互相调拥。1...

  • Lua_API lua_call & lua_callk

    开篇 今天来简单了解一下 Lua 的函数调用:lua_call。 解析 函数调用协议 void lua_call ...

  • tolua调用c#函数及变量

    比如说你要调用一个lua函数 但你想把自身传给lua函数让这个函数调用c# 类的其他函数以及变量 首先是调用lua...

  • 四、C++获得Lua的变量和Table的值

    上两篇文章都已经把Lua和C++函数的调用讲完了,这篇开始讲变量和Table的调用。 这篇文章主要是讲C++怎么调...

  • 「转」C++ 和 JS 交互

    本章主要来讲讲如何通过 V8 来实现 JS 调用 C++。JS 调用 C++,分为 JS 调用 C++ 函数(全局...

网友评论

    本文标题:c++如何调用lua函数

    本文链接:https://www.haomeiwen.com/subject/oobmettx.html