如何在 C 二进制文件中嵌入 Lua 脚本?

我一直在 shell 世界中得到很好的待遇,可以这样做:

./lua <<EOF
> x="hello world"
> print (x)
> EOF
hello world

现在我正在尝试在一个 C 应用程序中包含一个 Lua 脚本,我期望这个应用程序会随着时间的推移而不断增长。我以一个简单的脚本开始:

const char *lua_script="x=\"hello world\"\n"
  "print(x)\n";
luaL_loadstring(L, lua_script);
lua_pcall(L, 0, 0, 0);

但是这有几个缺点。主要是,我必须转义行尾和引号。但现在我正在编译时遇到 string length ‘1234’ is greater than the length ‘509’ ISO C90 compilers are required to support 警告,我希望不仅使这个程序自包含而且在其他编译器上可移植。

在 C 程序中包含一个大的 Lua 脚本的最佳方法是什么?最理想的情况是将脚本移动到一个单独的 *.lua 文件中以简化测试和更改控制,并将该文件编译进可执行文件。

原文链接 https://stackoverflow.com/questions/6171929

点赞
stackoverflow用户255049
stackoverflow用户255049

一种真正便宜但难以修改的方法是使用像 bin2c 这样的工具,将选定的 lua 文件(或其编译后的字节码,速度更快、占用空间更小)生成头文件,然后将其传递给 lua 执行。

你也可以尝试将它作为资源嵌入,但我不知道在 visual studio/windows 之外该如何实现。

根据你想要做什么,你甚至可能会发现 exeLua 有用。

2011-05-30 10:06:17