1

我尝试将 lua 集成到我的项目中(lua 5.2.1)而且我编译它没有问题。

但我的问题是我的项目使用我自己的系统从文件系统读取/写入文件。

所以我开始修改 lua 以替换 fopen / fclose / fread / fwrite 的每个调用......

但问题是,如果 stdio fct ans 使用一些我在我的项目中没有等效的 FILE 函数(并且没有那么容易重新实现),Lua 混合太多,例如:ungetc setvbuff

等等....

我的问题^^有些人已经尝试这样做了?如果是的话怎么办?是否有人现在是具有此功能的 lua 扩展(某些 c 库使用回调 fct 来询问打开/关闭文件)?

对我来说很奇怪的是,真正在多平台操作系统甚至嵌入式系统上使用的 lua 如此强烈地使用 std lib,对于真正跨平台的 lib,每种类型和来自 std 的 fct 都是类型定义的,以便于平台细节的改变。

感谢你给与我的帮助 :)

4

1 回答 1

3

您不是在询问“Lua 语言的”文件 IO;你说的是“Lua C 库的”文件 IO。从问题中并不清楚这一点。

Lua 对此有规定。luaL_loadfile例如,它只是一个函数的语法糖,它打开给定文件,加载它,关闭文件,然后调用luaL_loadstring它。

如果您处于文件 IO 必须通过不同渠道的环境中,则不应尝试luaL_loadfile使用新的文件 IO。您应该编写一个新函数,该函数从文件系统加载文件并调用luaL_loadstring.

简而言之:您不应该使用任何需要文件的 Lua API。Lua 的基于文件的函数是便利函数;而已。Lua 本身已经对此有规定;每个基于文件的 API 都有一个同样可以工作的非基于文件的版本。你不应该修改 Lua 本身。

于 2012-08-28T18:02:07.463 回答