Lua 5.4源代码在c++Builder 10.1中不是很正确

我下载了Lua的最新版本,并将其源代码包含在我的Embarcadero c++builder项目中。一切都进行得非常顺利,可以完美编译。

但是,当我运行我的脚本时,它就不正确了。

这个脚本是正确的

-- 脚本
Tp = tonumber( Temp )
Sp = tonumber( Setpoint )
Clr = "0xFF00FF00"
Db = 0.5
Hi = (Sp+Db)+1
Lo = (Sp-Db)-1
f = Hi
--

这个脚本失败了

-- 脚本
Tp = tonumber( Temp )
Sp = tonumber( Setpoint )
Clr = "0xFF00FF00"
Db = 0.5
Hi = (Sp+Db)+1
Lo = (Sp-Db)-1
f = math.floor( Hi )
--

使用string.format也会失败,因此看起来库没有正确加载。

我使用luaL_openlibs()来加载库。

我得出结论,我必须使用编译器指令。但是我找不到任何有所不同的东西。

如果有人了解如何将源代码构建到自己的应用程序中,则非常乐意知道。

我这样做的主要原因是为了速度。

我的应用程序是一个对传入数据运行脚本的数据服务器,我希望有数百个数据连接,包括进出。

点赞
用户13939633
用户13939633

答案是调用

lua_openlibs( state );

而不是以下代码

static const luaL_reg lualibs[] =
{
  {"base", luaopen_base},
  {"table", luaopen_table},
  {"io", luaopen_io},
  {"string", luaopen_string},
  {"math", luaopen_math},
  {"debug", luaopen_debug},
  {"loadlib", luaopen_loadlib},
  /* add your libraries here */
  {NULL, NULL}
};

static void openstdlibs( lua_State *l )
{
  const luaL_reg *lib = lualibs;
  for (; lib->func; lib++)
  {
    lib->func(l);  /* open library */
    lua_settop(l, 0);  /* discard any results */
  }
}

我只能假定openlibs中缺少一些路径信息。 抱歉格式问题,无法让其看起来正确。

2020-07-16 12:17:32