如何在lua中调用c函数?

在lua官方给出的api中

lua_pushcfunction

要求的是,c函数的格式必须是

typedef int (*lua_CFunction) (lua_State *L);

这种格式的,那对于不是这种格式的,我该如何处理?

遇到的问题:
我在widget中添加了一个函数

cocos2d::ui::Widget::ccWidgetClickCallback & Widget::getClickEventListener()
{
	return this->_clickEventListener;
}

并且用tolua工具生成了对应的函数

int lua_cocos2dx_ui_Widget_getClickEventListener(lua_State* tolua_S)

但是在这个函数中

 if (argc == 0) 
    {
        if(!ok)
        {
            tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_ui_Widget_getClickEventListener'", nullptr);
            return 0;
        }
        std::function<void (cocos2d::Ref *)>& ret = cobj->getClickEventListener();
        #pragma warning NO CONVERSION FROM NATIVE FOR std::function;
		//lua_pushcclosure (tolua_S,ret);
        return 1;
    }

却提示无法转换下去了?
那么这里我该如何处理?求大腿教我