Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

122
Views
C llamando a la función Lua en un bucle for

Mi archivo Lua llamado "add4c.lua", código Lua como este:

 function lua_sum(x,y,z) return x+y+z end

Mi código de archivo C es como:

 #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; }

Mi versión de Lua es 5.1.4, y mi código c está compilado por Visual Studio 2013. Al ejecutar este código, provoca un error, simplemente detiene el código, pero no hay mensaje, y si cambio la cláusula de bucle como "i<=10 "Funciona bien, ¿cómo solucionar esto?

over 4 years ago · Santiago Trujillo
1 answers
Answer question

0

lua_call(L, 3, 1) consume 3 valores de pila y deja 1 cuando termina. Entonces, después de lua_call(L, 3, 1) solo hay un valor en la pila, por lo que lua_pop(L, 4) está extrayendo demasiados valores y saliendo de la pila interna, de ahí el bloqueo. Utilice lua_pop(L, 1) en su lugar.

Si reconstruye Lua con LUA_USE_APICHECK definido, recibirá un mensaje de error de una afirmación interna la primera vez que llame a lua_pop(L, 4) .

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!