lua.lib庫的使用
便於後期使用
便於開發中的標頭檔案引用
便於mfc工程的開發使用
使生成的是庫,而不用生成可執行檔案,便於其他工程的引用
新增頭檔案目錄,庫目錄
新增鏈結器附加依賴項
//初始化lua虛擬機器//
state = lual_newstate();
if (!state)
luaopen_base(state);
luaopen_table(state);
luaopen_string(state);
luaopen_math(state);
luaopen_debug(state);
lual_openlibs(state);
//註冊函式,註冊後在指令碼可以呼叫msg方法
lua_register(state, "msg", tracelua);
lual_dofile(state, filename.c_str());
//載入指令碼//
int status = lual_loadfile(state, filename.c_str());
if (status)
log(info) << "lua檔案載入成功..."<< filename;
_statemap[filename] = state;
return true;
}//需要註冊的函式
int luamanager::tracelua(lua_state * lua_state)
bool plcmgr::getliftstatus(int entrance, opc::liftstatus & status, string & desc)
//函式名稱//
lua_getglobal(state, "get_lift_status");
//傳參//
lua_pushnumber(state, entrance);
try//在指令碼中如果return 'abc', 1,那麼1在棧頂即-1,字串在-2//
//1代表棧底,-1代表棧頂//
if (!lua_isnumber(state, -2))
if (!lua_isstring(state, -1))
int statusint = (int)lua_tointeger(state, -2);
desc = lua_tostring(state, -1);
} catch (...)
return false;
}
function get_lift_status(entrance)
msg('asd') --即註冊的函式
res, status = readopc(i, pr_entrance_status) --帶著返回值的註冊函式
if(res) then
return 0, "comerr"
endif(status==0) then
return status, "asd"
elseif(status==1) then
return status, "asd"
else
return 0, "dataerr"
endend
在VS中 使用C 訪問Lua
建立vs程式集,然後新增引用luainte ce.dll檔案,選中引用,右鍵新增引用,然後瀏覽到luainte ce.dll的目錄,選擇新增就可以了 而後將luanet.dll檔案複製貼上到,程式集的debug的目錄下,最後建立在vs中使用lua指令碼 我這裡是test.lua檔案 完成情況如圖 u...
開始學習LUA,在LUA中使用UNICODE字串
新買到lua程式設計 第2版 開始學習lua程式設計。今天測試用lua呼叫windows的messageboxw函式。需要在lua中定義unicode字串。lua的string型別為8位編碼,包括數值0,可以編碼任意二進位制資料。如果編碼unicode,則需要使用 轉義序列。如字串 lua 如果使用...
在lua環境中使用protobuf
最近在cocos2dx的專案中,需要在lua指令碼層使用protobuf協議。官方已經推出了很多種語言的版本。但唯獨lua版本不全。於是開始研究protobuf在lua下的實現,將完整的過程記錄了下來,希望對其它人能有所幫助。簡單介紹一下裡面的三個目錄 example 存放的乙個示例協議,plugi...