ESP8266-是否可以从C运行Lua(而不是整个NodeMCU环境)?

ESP8266-是否可以从C运行Lua(而不是整个NodeMCU环境)?,lua,esp8266,Lua,Esp8266,我正在使用ESP8266,我不想在整个项目中使用Lua,我只想运行一些从wifi/sd卡接收的Lua代码片段。我需要启动一个Lua环境并运行脚本,然后最终调用一些本机函数来执行低级任务。换句话说,我只想使用Lua作为简单的脚本语言(正如它的初衷)来实现一些动态行为。可能吗?有为arduino建造的lualib吗 提前谢谢 例如,您可以简单地将Lua嵌入extlibs/文件夹中,并在编译程序时链接到它。 有现有的Lua二进制文件,但是自己构建它很容易,而且更好(因为它是多平台的)。ESP8266有

我正在使用ESP8266,我不想在整个项目中使用Lua,我只想运行一些从wifi/sd卡接收的Lua代码片段。我需要启动一个Lua环境并运行脚本,然后最终调用一些本机函数来执行低级任务。换句话说,我只想使用Lua作为简单的脚本语言(正如它的初衷)来实现一些动态行为。可能吗?有为arduino建造的lualib吗


提前谢谢

例如,您可以简单地将Lua嵌入extlibs/文件夹中,并在编译程序时链接到它。
有现有的Lua二进制文件,但是自己构建它很容易,而且更好(因为它是多平台的)。

ESP8266有高达4MB的程序存储空间。理论上,您可以按照数据表的规定获得高达16MB的数据。

我记得,编译Lua的合并版本(所有源代码都在一个文件中)占用的空间不到100kb。

因此,您可以编译Lua库并根据需要在esp8266上使用它,甚至可以使用Arduino IDE。

但是如果你这么做的话你会裸体的Lua。。。没有漂亮的库来控制Wifi、串行、SD和端口。。。您必须用C语言提供,或者根据需要使用NodeMCU代码。


您可以尝试LuaJIT并直接从Lua访问C代码,这样就不需要编写库。我不知道你将如何将它编译成Esp8266,或者如果有人曾经尝试过,但你可以“为了科学”这样做,并告诉我们结果如何。

好的,我知道两个答案都告诉我我可以将代码嵌入到我的项目中,但是,我发现我需要做一些小的更改。我提供了一个示例工作项目,必须进行以下更改:

  • 已启用标志
    LUA_32BITS
    LUA_USE_LONGJMP
    (C异常处理)
  • 以下库被排除在外:
    io
    os
    package
    coroutine
  • 以下函数已从C API中删除:
    luaL\u文件结果
    luaL\u执行结果
    luaL\u加载文件
    luaL\u加载文件
    luaL\u加载文件
    luaB\u加载文件
  • Lua输出消息被重定向到串行接口,检查
    tinylua.h
    tinylua.cpp
    lauxlib.h
    以更改此行为
希望这有帮助