我試圖打電話叫test2.lua 一個Lua文件裏面的函數這是test2.lua的內容:的Lua:讓全局函數加載文件後未能
function abc(path)
t = {}
table.insert(t, "a")
return t
end
正如你所看到的它只需要一個輸入並返回一個字符串。
這是我的C代碼。這很簡單。然而,我的調用getglobal爲了調用該函數不起作用... lua_getglobal說,它不是一個函數,當我測試它......任何理由爲什麼這是?不應該是在源文件內部可返回的全局函數嗎?那麼爲什麼它只能找到這個全球性的零?
L = lua_open();
luaL_openlibs(L);
luaL_loadfile(L, "src/test2.lua");
lua_getglobal(L, "abc");
lua_pushstring(L, "coollll");
int error = 0;
if ((error = lua_pcall(L, 1, 1, 0)) == 0)
{
std::cout << "cool";
}
編輯:
調用lua_getglobal引起我的節目,打破控制,無論使用的loadFile或dofile處理的......任何想法,爲什麼?
lua_getglobal crashing program
好的。所以我很好理解你必須運行該文件的概念,然後才能訪問該函數,直到代碼執行完畢。一切都很好。我將加載文件更改爲dofile。但是我有一個新問題。我可能會爲它創建一個新的問題,但lua_getglobal正在打破。發生時無論使用loadfile或dofile,在調用lua_getglobal(L,「trans」);它調用getfield後在luaS_newlstr中崩潰...:/ –
http:// stackoverflow。COM /問題/ 6754778/LUA-getglobal-崩潰程序 –