通过一个简单的例子,看C是如何调用LUA的,这样将原有C处理数据的逻辑用LUA来做,省去了编译C的过程。

代码,如下:

#include <stdio.h>
#include <string.h>
#include <lua.h>
#include <lauxlib.h>
#include <lualib.h>
lua_State* L = NULL;


int main()
{
    L = lua_open();
    luaL_openlibs(L);
    if (luaL_loadfile(L, "test.lua") || lua_pcall(L, 0,0,0))
        error(L, "cannot run configuration file:%s", lua_tostring(L, -1));


     double x = 1.0;
     double y = 5.0;

     double z;

    

     lua_getglobal(L, "f");
     lua_pushnumber(L, x); 
     lua_pushnumber(L, y); 
    
     lua_pcall(L, 2,1,0);


//    printf("%f\n", f(1.0, 2.0));
    
    return 0;
}

编译参数:

gcc   a6.c -I/usr/include/lua5.1 -ldl -lm -llua5.1