Мой файл Lua под названием "add4c.lua", Lua код так:С вызовом функции Lua в цикле
function lua_sum(x,y,z)
return x+y+z
end
Мой код C файл как:
#include "D:/luac/include/lua.h"
#include "D:/luac/include/lualib.h"
#include "D:/luac/include/lauxlib.h"
#include <stdlib.h>
#pragma comment(lib,"D:/luac/lib/lua51.lib")
int main(void)
{
lua_State *L = luaL_newstate();
luaopen_base(L);
luaL_openlibs(L);
int error = luaL_dofile(L, "add4c.lua");
double r;
for (int i = 0; i <= 200; i++){
lua_getglobal(L, "lua_sum");
lua_pushnumber(L, i+1);
lua_pushnumber(L, i+2);
lua_pushnumber(L, i+3);
lua_call(L, 3, 1);
r = lua_tonumber(L, -1);
printf("%d\n", i);
lua_pop(L, 4);
}
lua_close(L);
return 0;
}
Моя Lua версия является 5.1.4, а мой код c скомпилирован Visual Studio 2013. При запуске этого кода он вызывает ошибку, просто останавливает код, но не имеет сообщения, и если я изменяю предложение цикла как «i < = 10», оно отлично работает, как это исправить?
BTW, вместо использования lua_getglobal (L, "lua_sum") в теле цикла, есть ли способ кэшировать функцию lua_sum, поэтому я могу просто загрузить функцию Lua только один раз. – user1021531
@ user1021531, да, вызовите 'lua_getglobal' один раз за пределами цикла и вызовите' lua_pushvalue (L, -1) 'в теле. – lhf