1

私は言語を独学しようとして、非常に単純な Lua プログラムに取り組んでいます。3行のプログラムは次のとおりです。

file = io.open("hello.txt", "w")
file:write("Hello, World.\n")
io.close(file)

Lua をスクリプトとして使用すると、問題なく動作します。プログラムをコンパイルすると、動作します。ただし、コンパイルされたプログラムを実行すると、次のようになります。

代替テキスト http://profnano.org/andy/misc/img/lua_crash.jpg

Pentium 4 の Windows XP で Lua 5.1.2 を使用しています。Lua をアンインストールして再インストールしましたが、効果がありませんでした。次のようにスクリプトをコンパイルしています。

luac -o hello.exe hello.lua

私は何か間違ったことをしていますか、それとも既知のバグですか? Lua がインストールされていないコンピューターで実行する Lua プログラムを作成できるようにしたいと考えています。ヘルプ!(ありがとう!)

4

1 に答える 1

4

luac はシステム exe ファイルにコンパイルされません。それは lua スクリプトを取り、それを lua バイトコードに変換するだけです。結果のファイルを lua に渡して実行する必要があります

したがって、exeファイルにはOSの観点からのガベージが含まれています。exe ファイルに有効な exe ヘッダーが含まれていない場合、OS は何らかの理由で古いスタイルの dos .com ファイルであると判断し、16 ビット dos サブシステムで実行しようとします。したがって、奇妙なエラーメッセージ。

コンパイル済みの lua から exe を作成する場合は、別の環境 (おそらくビジュアル スタジオ) を使用して、組み込みの lualib を使用してコンパイル済みまたはスクリプトの lua ファイルをロード (および実行) する小さなプロジェクトを作成する必要があります。

Stackoverflow での Standalone Lua Executableの作成には、その方法に関するヒントがいくつかあります。

于 2010-01-14T04:32:21.070 に答える