我尝试将lua集成到我的项目中(lua 5.2.1) 我编译它没有问题。
但我的问题是我的项目使用我自己的系统从文件系统读取/写入文件。
所以我开始修改lua来替换每次调用fopen / fclose / fread / fwrite ...
但问题是如果stdio fct和stdio fct使用了一些FILE函数,我的项目中没有相同的东西(并且没有那么容易重新实现),例如:Lua太混合了,例如: ungetc函数 setvbuff
依旧......
我的问题^^ 一些aleeady尝试这样做?如果是的话怎么样? 有人现在是具有此功能的lua的扩展(某些c库使用回调函数来询问打开/关闭文件)吗?
对于我来说,真正使用多层平台或者甚至嵌入系统的lua使用std lib非常有用,对于真正的跨平台lib而言,每种类型和来自std的fct的类型都很容易使用变化
感谢您提供的任何帮助:)
答案 0 :(得分:3)
你不是在问“Lua the language's”文件IO;你在谈论“Lua the C library's”文件IO。这个问题并不清楚。
Lua对此有规定。例如,luaL_loadfile
只是一个函数的语法糖,它打开给定文件,加载它,关闭文件,然后在其上调用luaL_loadstring
。
如果您处于文件IO必须通过不同通道的环境中,则不应尝试使luaL_loadfile
使用新文件IO。您应该编写一个新函数,从文件系统加载文件并调用luaL_loadstring
。
简而言之:您不应该使用任何需要文件的Lua API。 Lua的基于文件的功能是便利功能;而已。 Lua本身已经有了这方面的规定;每个基于文件的API都有一个非基于文件的版本,它也可以正常工作。你不应该修改Lua本身。