您好,登錄后才能下訂單哦!
C++調用Lua代碼配置文件函數的方法?這個問題可能是我們日常學習或工作經常見到的。希望通過這個問題能讓你收獲頗深。下面是小編給大家帶來的參考內容,讓我們一起來看看吧!
Lua文件里面是有兩個函數的,然后用cpp文件調用代碼,最后,還有很關鍵的一步,編譯時,我們需要加上附加選項: g++ main.cpp -o main -llua -ldl。過程看起來簡單,還是需要動手操作的。
首先你要安裝lua的dev,安裝很簡單:
yum install lua-devel
即可,很多Linux系統自帶Lua但是沒有dev,有點小坑。
下面是Lua文件,里面就兩個函數:
function add(a, b) return a + b end function hello() print("Hello Lua!!!") end
之后是cpp文件的調用代碼:
#include<iostream> #include<string> using std::cout; using std::endl; using std::string; //extern的意義,將下面文件當成C風格文件使用 extern "C" { #include<lua.h> #include<lauxlib.h> #include<lualib.h> } int main() { //創建環境 lua_State *L = luaL_newstate(); if(L == NULL) { cout << "State error" << endl; return -1; } //加載庫 luaL_openlibs(L); const string file = "func.lua"; // 加載文件 int ret = luaL_dofile(L, file.c_str()); if(ret) { cout << "dofile error" << endl; return -1; } //hello函數沒有參數,直接調用 lua_getglobal(L, "hello"); lua_pcall(L, 0, 0, 0); //三個0含義,0實參,0返回值,0自定義錯誤處理 lua_getglobal(L, "add"); //向add函數傳入兩個參數,這里直接傳了1和2,傳變量也ok lua_pushnumber(L, 1); lua_pushnumber(L, 2); lua_pcall(L,2,1,0); //返回值被放在-1的位置上 cout << lua_tonumber(L, -1) << endl; lua_close(L); return 0; }
最后,還有很關鍵的一步,編譯時,我們需要加上附加選項:
g++ main.cpp -o main -llua -ldl
看看結果:
大功告成
感謝各位的閱讀!看完上述內容,你們對C++調用Lua代碼配置文件函數的方法大概了解了嗎?希望文章內容對大家有所幫助。如果想了解更多相關文章內容,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。