Lua错误:";尝试调用字符串值";在Android NDK下?

Lua错误:";尝试调用字符串值";在Android NDK下?,android,android-ndk,lua,Android,Android Ndk,Lua,我的Lua脚本由编译,编译后的脚本模块在桌面计算机(OSX 10.7.5)中运行良好。但当我在Android手机(Android 2.3.6)下运行它时,它总是失败,并抱怨试图调用字符串值。同样的脚本也可以在同一部手机中以脚本(未编译)的方式运行,不会出现问题 测试中使用了Lua 5.1.5和Android NDK r8b logcat中的错误: 12-26 09:40:26.934:E/libb22lupre(8190):无法运行脚本:尝试调用字符串值 C代码段(为了简单起见,删除了错误处理

我的Lua脚本由编译,编译后的脚本模块在桌面计算机(OSX 10.7.5)中运行良好。但当我在Android手机(Android 2.3.6)下运行它时,它总是失败,并抱怨
试图调用字符串值。同样的脚本也可以在同一部手机中以脚本(未编译)的方式运行,不会出现问题

测试中使用了Lua 5.1.5和Android NDK r8b

logcat中的错误:

12-26 09:40:26.934:E/libb22lupre(8190):无法运行脚本:尝试调用字符串值
C代码段(为了简单起见,删除了错误处理代码):

const char script[]=“需要\”hello.world \“\n”
“需要\“另一个模块\”\n”
“hello.world.test2()”;
luaL_加载字符串(L,脚本);
lua_pcall(L,0,lua_MULTRET,0);
我转储了预加载的表,这些必需的模块已经存在(已成功加载)

我在网上搜索,仍然找不到解决办法。如有任何建议,将不胜感激

[更新] 我为android编译了lua命令,并将编译后的lua脚本嵌入其中。错误与上述相同

$adb shell
$cd/数据/本地
$ls
tmp
卢阿
dump_preload.lua
$./lua dump\u preload.lua
---打印表-预加载
测试功能:0x376f0
anothermodule函数:0x37718
hello.world函数:0x376b0
---打印表---已加载
字符串表:0x33828
调试表:0x37098
包表:0x33d30
_G表:0x32528
io表:0x34e80
操作系统表:0x357b8
表:0x332c0
数学表:0x36530
协同程序表:0x33988
---打印表格-装载机
1函数:0x33ed8
2功能:0x33ef8
3功能:0x33f18
4功能:0x33f38
美元/卢阿
Lua 5.1.5版权所有(C)1994-2012 Lua.org,临市局里约
>需要“测试”
尝试调用字符串值
堆栈回溯:
[C] :?
[C] :在函数“require”中
stdin:1:在主块中
[C] :?
>需要“你好,世界”
尝试调用字符串值
堆栈回溯:
[C] :?
[C] :在函数“require”中
stdin:1:在主块中
[C] :?
> 

问题已解决。事实证明,编译的lua代码是不可移植的。必须针对目标计算机编译lua脚本

以下步骤的简短摘要:

  • 为Android编译lua命令
  • 将lua命令文件和LOOP的lua文件以及应用程序的lua文件推送到目标手机的文件夹中,例如/data/local
  • 打开adb shell并编译lua脚本文件
  • 拉出生成的.h.c文件