lua5.2的错误:检测到多个Lua虚拟机。

我最近在学习5.2版的Lua,想尝试以下步骤:

步骤1,构建Lua的C模块:

...

我使用liblua.a进行编译和链接,并确信在Lua脚本中像“require(“tool”)tool.add(1,2)”这样可以正常运行。

步骤2,我编写了另一个C程序,想要在步骤1中需要我的C模块,如下所示:

...

我也使用liblua.a进行编译和链接,但是当我运行它时出现错误:“require_fail = multiple Lua VMs detected”

有人的博客说,在lua5.2中,应该动态地链接C模块和C主机程序,而不是静态地链接。

有没有人遇到过同样的问题,或者我的代码有什么问题,谢谢。

注意:

问题已经通过使用-Wl,-E编译主程序来解决,非常感谢您的帮助^^。

点赞
用户107090
用户107090

不要在创建 .so 文件时将 C 模块与 liblua.a 进行链接。例如,请参见我的 Lua 库页面:http://www.tecgraf.puc-rio.br/~lhf/ftp/lua/。您可以静态链接 liblua.a 到您的主程序中,但您必须在链接时添加 "-Wl,-E" 来导出其符号。这就是 Linux 中 Lua 解释器的构建方式。

2013-01-08 19:51:29