1

lua を自分のプロジェクト (lua 5.2.1) に統合しようとしていますが、問題なくコンパイルできます。

しかし、私の問題は、私のプロジェクトがファイルシステムからのファイルの読み取り/書き込みに独自のシステムを使用していることです。

それで、fopen / fclose / fread / fwriteの各呼び出しを置き換えるためにluaを変更し始めます...

しかし、問題は、 stdio fct ans が私のプロジェクトに同等のものを持っていない(そして再実装がそれほど簡単ではない)いくつかの FILE 関数を使用している場合、Lua があまりにも多く混在していることです: ungetc setvbuff

等々....

私の質問 ^^ いくつかの aleeady はそれをしようとしていますか? はいの場合、どのように?この機能を持つ lua の拡張機能 (一部の C ライブラリは、ファイルの開閉を要求するためにコールバック fct を使用します) はありますか?

マルチプラットフォームOSまたは組み込みシステムで実際に使用されているluaがstd libを非常に強力に使用していることは、私にとっては奇妙なことです。

あなたが私に与えることができる助けをありがとう:)

4

1 に答える 1

3

「言語の Lua」ファイル IO について質問しているわけではありません。あなたは「CライブラリのLua」ファイルIOについて話している。これは質問からは明らかではありませんでした。

Lua にはこれに対する規定があります。luaL_loadfile、たとえば、指定されたファイルを開き、ロードし、ファイルを閉じてから呼び出す関数の周りの構文糖衣ですluaL_loadstring

luaL_loadfileファイル IO が別のチャネルを通過する必要がある環境にいる場合、新しいファイル IO を操作しようとするべきではありません。ファイルシステムからファイルをロードして を呼び出す新しい関数を作成する必要がありますluaL_loadstring

つまり、ファイルを必要とする Lua API を使用すべきではありません。Lua のファイルベースの関数は便利な関数です。これ以上何もない。Lua 自体には、すでにこのための準備が整っています。すべてのファイルベースの API には、同様に機能する非ファイルベースのバージョンがあります。Lua 自体を変更するべきではありません。

于 2012-08-28T18:02:07.463 に答える