在Lua中从表中读取回值有问题



I've ' ' inherited"一个使用Lua和c++的应用程序。

要在两者之间移动数据,将数据推入表并回读。在某些情况下,指向某些数据的指针值也以这种方式存储。但显然,回读的值总是零。我不太了解Lua,所以有人能解释一下为什么这突然失败了(它一直在工作,但有些东西发生了变化)

Lua版本是5.2.1(我已经确保在工作/非工作环境下它是相同的版本)

数据按如下方式推送:

lua_pushstring(L, "data"); lua_pushinteger(L, (u32)pData->pucImageData); lua_settable(L, -3);

我在日志

中得到这个

PUSHEntry (key=data, v=-1451470840)

并像这样弹出

u32 uValue = 0;
lua_pushstring(L, key);
lua_gettable(L, iTableIndex);  /* get table[key] */
uValue = (u32)lua_tonumber(L, -1); // Retrieve value
printf("ReadEntry (key=%s, v=%d) n", key, uValue);
lua_pop(L, 1);  /* remove number from stack */

我只得到这个

ReadEntry (key=data, v=0)

谢谢您为我指出正确的方向!

问题是大的数字是由lua_pushinteger推动的。将其更改为lua_pushnumber修复了这个问题。

我同意这需要在64位平台上进行一些清理。

最新更新