我选择Lua5.1作为我的应用程序的嵌入式脚本语言,但是当我将应用程序移植到一个在PowerPC上运行LynxOS的遗留平台时,似乎出了问题。
我在PC上运行了下面的代码,一切看起来都很好:
void test_lua()
{
const char *code = "foo = 5\n";
double vfoo=0;
lua_State *L = luaL_newstate();
(void)luaL_loadbuffer(L, code, strlen(code), "line");
(void)lua_pcall (L, 0, 0, 0);
lua_getglobal(L, "foo");
vfoo = lua_tonumber(L, -1);
lua_close(L);
myTrace("vfoo = %f", vfoo);
for(;;);
}对于PC (Visual vfoo 6.0),我得到了期望的“C++ = 5.000000”
但是使用LynxOS/PowerPC,我得到了"vfoo = 0.000000“。
那么,Lua在LynxOS/PowerPC上发生了什么?我想知道是否有一些大端机器的配置,我在"luaconf.h“中查找了它,但什么也没有找到。我也尝试了配置项"LUA_USE_POSIX“,但没有帮助。
我知道这不是一个典型的lua编程平台。然而,任何建议都是受欢迎的,并受到赞赏。
发布于 2013-11-24 16:39:14
Endian-ness不应该影响lua代码的操作。我已经移植到了几个非Win32的平台,并且我遇到过用于将64位双精度型转换为整数的LUA_IEEE754TRICK并不总是有效,而是在默认情况下启用的。尝试取消定义luaconf.h中的LUA_IEEE754TRICK宏。
我还遇到过浮点printf/scanf函数损坏或不可靠的lua_number2str,我必须编写自己的自定义版本clibs。
不过,我很同情你。lua引擎是一个很大的黑盒子,当它的内部出现问题时,它很难单步执行和调试。在我的例子中,这通常是编译器/clib的错误,但这并不会使两者更容易相处。
https://stackoverflow.com/questions/15738378
复制相似问题