`
tcspecial
  • 浏览: 907914 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

lua 调用C

    博客分类:
  • OS
阅读更多

   Lua 下通过虚拟栈传递参数,只要注册相应接口便可调用C函数。

 

#include "lua.h"		// v5.1.5
#include "lualib.h"
#include "lauxlib.h"

// 原生函数
int ShowVal(const char *szReq, int &score);

// 包装函数
int GetScore(lua_State *env)
{
    int count = lua_gettop(env);
    if (count != 1)
    {
        lua_pushstring(env, "Param size not equal 3");
        lua_error(env);
        return -1;
    }

    // 参数出栈
    const char *szReq = luaL_checkstring(env, 1);

    // 原生接口
    int code = 0, score = 0;
    code = ShowVal(szReq, &score);

    // 结果入栈
    lua_pushnumber(env, code);
    lua_pushnumber(env, score);
    return 2;	// 入栈参数个数
}

static luaL_Reg luaLibs[] =
{
    {"luaGetScore", GetScore},
    {NULL, NULL}
};

// lua接口注册
int luaopen_cloudadapi(lua_State *env)
{
    const char *const LIBRARY_NAME = "cloudadapi";
    luaL_register(env, LIBRARY_NAME, luaLibs);

    return 1;
}

 

编译动态库 cloudadapi.so 

 

测试:

require "cloudadapi"

code, score = cloudadapi.luaGetScore('test')
print(string.format("code:%d score:%d", code, score))

 

 

分享到:
评论

相关推荐

    lua和c语言之间相互调用实例

    Lua调用C** Lua提供了一种称为"Lua C API"的接口,允许C代码直接与Lua虚拟机进行交互。这个API包括了一系列的函数,用于创建和管理Lua值,以及在Lua和C之间传递数据。例如,`luaL_newstate()`用于创建一个新的Lua...

    lua调用c函数库的demo

    lua调用c函数库的demo 其中实现了对一个 数组的管理。 注意lua参数与c函数的对应, 如:b=lua_dllb.getarray(a,1) static int getarray(lua_State* L) { NumArray * a=(NumArray*)lua_touserdata(L,1); //对应lua...

    lua调用C/C++函数

    总结,Lua调用C/C++函数涉及到以下几个步骤: 1. 初始化Lua状态机。 2. 加载并执行Lua脚本。 3. 使用`lua_register`或`lua_pushcfunction`将C/C++函数注册到Lua。 4. 在Lua脚本中通过函数名调用这些函数。 通过这种...

    lua调用可执行文件

    在`lua 调用windows api.txt`中,可能包含了如何使用Lua调用CreateProcess函数的示例。CreateProcess是Windows API中用于创建新进程的函数,可以用来启动一个可执行文件,并获取其进程句柄,从而实现更复杂的控制: ...

    lua 调用 c++ dll 示例

    在IT领域,有时候我们需要在不同的编程语言之间进行交互,例如使用脚本语言 Lua 调用 C++ 编写的动态链接库(DLL)。本示例是关于如何在 Lua 中调用由 Visual Studio 2010 编译的 C++ DLL 的教程。下面将详细介绍这...

    LUA调用C++类

    首先,要实现LUA调用C++类,我们需要一个中间层,这个中间层通常被称为"绑定"或"包装器"。LUA的C API提供了与C/C++交互的接口,我们可以利用这些接口来创建C++类的LUA表示。这里,我们有一个名为`luawrapper`的文件...

    如何使用cocos自动绑定工具实现lua调用c

    ### 如何使用Cocos2d-x自动绑定工具实现Lua调用C++ 在游戏开发领域,尤其是在使用Cocos2d-x框架进行开发时,经常会遇到需要让脚本语言(如Lua)能够调用C++代码的需求。这不仅能充分利用C++的强大性能,还能保持...

    lua实现调用webservice

    将之前生成的 C 函数封装成 Lua 可调用的形式,通常会形成 `.c` 和 `.h` 文件,例如 `luasoap.c` 和 `luasoap.h`。这些文件将使用之前生成的 C/C++ 代码来实现 Lua 对 Web Service 的调用。 #### 三、生成 Linux 下...

    Lua中调用C函数

    在Linux底下,从Lua中调用C函数的一个简单例子。

    Lua教程(二十):Lua调用C函数

    ### Lua调用C函数 #### 一、引言 在软件开发中,Lua作为一种轻量级的脚本语言,因其简单高效的特点而受到广大开发者的青睐。然而,由于Lua本身的特性限制,在处理某些特定任务时可能显得力不从心,比如涉及到底层...

    Lua的最基本使用 C++与lua的互相调用

    在本文中,我们将深入探讨如何在C++程序中集成Lua,实现C++调用Lua函数以及Lua调用C++函数。 一、C++调用Lua函数 1. 配置环境:首先,你需要在C++项目中包含Lua库。确保已经下载并正确安装了Lua,并将其头文件和库...

    lua调用C++函数

    标题"lua调用C++函数"所涉及的知识点主要包括: 1. **Lua与C++的交互接口**:Lua提供了一个名为`luaL_newstate`的API来创建一个新的Lua状态机,这是与C++交互的基础。然后,通过`luaL_openlibs`打开标准库,使Lua...

    Lua调用C++函数实现

    这主要通过 Lua 的 C API 实现,它提供了一套 C 函数供外部语言(如 C++)调用,同时也允许外部代码注册函数给 Lua 使用。在 C++ 中,我们可以创建一个 Lua 共享库,其中包含用于与 Lua 交互的函数。 1. **创建 Lua...

    Lua调用自定义C模块

    #### 二、Lua调用C函数的优势 1. **性能提升**:对于计算密集型任务,C语言通常比Lua快得多。通过将核心逻辑放在C中,可以在保持灵活性的同时获得更好的性能。 2. **系统交互**:C语言可以直接访问底层系统资源,这...

    linux环境中c++调用lua动态链接库以及编译方法

    // 处理Lua调用C函数的逻辑 } lua_register(L, "my_c_function", my_c_function); ``` 4. 用`luaL_loadfile(L, "script.lua")`或`luaL_dostring(L, "your_code_string")`加载并执行Lua代码。 5. 调用Lua函数:`lua_...

    Lua和C语言交互.zip

    3. **处理Lua调用C**:当Lua脚本调用注册的C函数时,C函数的原型会接收一个`lua_State*`指针,它代表当前的Lua环境。通过这个指针,你可以使用`lua_gettop`获取堆栈顶的元素数量,`lua_toxx`系列函数(如`lua_to...

    lua与C相互调用例子程序

    5. 错误处理:在C调用Lua或Lua调用C的过程中,都需要处理可能出现的错误。lua_pcall函数的返回值表示调用结果,如果出现错误,可以通过lua_tostring获取错误信息。 6. C++与Lua的结合:尽管这里提到的是C,但C++...

    lua_c_lua_c

    文件名暗示了这个例子会展示如何从Lua调用C函数。 在这个例子中,我们可能会遇到以下知识点: 1. **Lua API for C**: Lua提供了一套C语言的API,允许C代码与Lua环境进行交互。这包括创建和初始化Lua状态机,加载和...

    delphi7与lua相互调用的例子

    在Delphi中,过程相似,但需使用Delphi的动态链接库(DLL)接口来调用Lua的C API。在这个例子中,"lua-5.1.1.dll"是Lua的动态链接库,Delphi程序将通过这个库与Lua进行通信。 Delphi的Pascal代码可以通过导入lua-...

    linux下lua调用C++的经典实例.rar

    Lua提供了一套C API,允许开发者在C/C++代码中嵌入Lua或让Lua调用C/C++函数。通过注册C函数到Lua全局表,Lua脚本可以直接调用这些函数。在C++中,我们可以封装C接口,然后在这些接口中调用C++类的方法。 在本实例中...

Global site tag (gtag.js) - Google Analytics