Hai*_* Li 7 lua powerpc lynxos
我选择Lua 5.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(;;);
}
Run Code Online (Sandbox Code Playgroud)
用PC(Visual C++ 6.0)我期待"vfoo = 5.000000"
但是对于LynxOS/PowerPC,我得到了"vfoo = 0.000000".
那么Lua在LynxOS/PowerPC上发生了什么?我想知道是否有一些big-endian机器的配置,我在"luaconf.h"中查找它但却一无所获.我也尝试了配置项"LUA_USE_POSIX"但没有帮助.
我知道它不是lua编程的典型平台.但是,欢迎任何建议,并表示赞赏.
Endian-ness 不应该影响 lua 代码的运行。我已经移植到了几个非 Win32 的平台,并且我遇到过用于将 64 位双精度转换为整数的 LUA_IEEE754TRICK 并不总是有效的情况,但默认情况下处于启用状态。尝试取消 luaconf.h 中 LUA_IEEE754TRICK 宏的定义。
我还遇到过 clib 中浮点 printf/scanf 函数损坏或不可靠的情况,我不得不编写自己的自定义版本的 lua_number2str。
不过我对你有感觉。lua 引擎是一个巨大的黑匣子,当其内部出现问题时,单步执行和调试会令人困惑。就我而言,这通常是编译器/clib 的错误,但这并不会让两者相处变得更容易。
归档时间: |
|
查看次数: |
276 次 |
最近记录: |