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位平台上进行一些清理。