Lua 和 C 互相呼叫

2021-08-16 07:35:09 字數 1975 閱讀 3009

api有一系列的壓棧函式,為了將棧頂的lua值轉換成c值,我們為每種型別定義乙個對應的函式:

void lua_pushnil(lua_state *l);

void lua_pushboolean(lua_state *l,int bool);

void lua_pushnumber(lua_state *l,double n);

void lua_pushstring(lua_state*l,const char*s);

void lua_pushuserdata(lua_state*l,void*p);

bool lua_toboolean(lua_state*l,int idx);

int lua_tonumber(lua_state*l,int idx);

const char* lua_tostring(lua_state*l,int idx,size_t *len);

void* lua_touserdata(lua_state*l,int idx);

int lua_isboolean(lua_state*l,int idx);

int lua_isnumber(lua_state*l,int idx);

int lua_isstring(lua_state*l,int idx);

int lua_gettop(luastate *l);

void lua_settop(luastate *l,int idx);

void lua_pushvalue(luastate *l,int idx);

void lua_remove(luastate *l,int idx);

void lua_insert(luastate *l,int idx);

void lua_replace(luastate *l,int idx);

配置cmakelists.txt

cmake_minimum_required(version 3.8)  

project(luac)

set(cmake_cxx_standard 11)

set(source_files main.cpp ltablib.c lauxlib.c lbaselib.c lapi.c lbitlib.c lcode.c lcorolib.c lctype.c ldblib.c ldebug.c ldo.c ldump.c lfunc.c lgc.c linit.c liolib.c llex.c llimits.h lmathlib.c lmem.c loadlib.c lobject.c lopcodes.c loslib.c lparser.c lstate.c lstring.c lstrlib.c ltable.c ltm.c lundump.c lutf8lib.c lvm.c lzio.c)

add_executable(luac $)

#include "lua.hpp"  

#include int main()

function add (a,b)

return a+b

end

#include "lua.hpp"

#include using namespace std;

//顯示棧內情況

static void stackdump(lua_state* l);

int main()

int main()

lua.hpp是我們在使用c++呼叫lua時要新增的標頭檔案,它的內容如下:

3、在多個人協同開發時,可能有的人比較擅長c語言,而有的人擅長c++,這樣的情況下也會有用到 

參考:

c和lua的互相呼叫

lua和c的互相呼叫 適用於mac os 一 c呼叫lua test.c include include include include lua state l int getadd int x,int y int main int argc,char argv add.lua function a...

學習筆記 C 與lua互相呼叫

1.輸出lua指令碼內容 void start 2.自定義loader void start private byte myloader ref string filepath 3.載入變數 double a luaenv.global.get a 獲取到lua裡面的全域性變數 a print a ...

Lua 指令碼語言 與 C的互相呼叫

lua訪問c 將c的函式包裝成lua環境認可的函式 將包裝好的函式註冊到lua環境中 lua呼叫c函式時,c函式從棧中獲取引數,並將計算結果壓入棧,並返回壓入棧的結果的數量 從lua指令碼中呼叫c 函式,函式必須定義lua cfunction型別。格式如下 int lua cfunction lua...