3

NLua を使用して .NET 内で実行したいビジネス ロジックを含む Lua コードがいくつかあります。

Lua ファイルの一部では、現在、他のファイルの関数を参照するために「require」キーワードを使用しています。これで、ZeroBrane Studio などを使用してコードを実行すると問題なく動作します。ただし、「DoFile」を使用してコードを NLua にロードすると、「モジュールが見つかりません」というエラーが発生します。

私の質問は; NLua 内でコードを実行するときに、「require」の概念を使用できますか? そうでない場合、ファイルに対して DoFile を実行する前に、これらの行を削除する必要がありますか (もちろん、ファイルを正しい順序で実行するようにしてください)。

更新: おそらく、Lua ファイル フォルダーを package.path に追加する必要があるだけだと思います。これDoString("package.path = '<my_path>' .. package.path");は「ベストプラクティス」ですか?

4

1 に答える 1

1

検索が開始されるルート ディレクトリの場所は、実行ファイルが置かれている場所ではなく、実行可能ファイルが実行DoStringされている場所です。

サンプル ファイルとして使用して、NLua が必要とする場所の例をheaps.lua次に示します。

ファイルなし './heaps.lua'
ファイルなし './heaps/init.lua'
ファイルなし './lua/heaps.lua'

例:

実行可能パスC:\foo\bar.exe

スクリプト パスC:\baz\qux.lua

qux.luaには require for がありheaps、NLua はC:\foo\ヒープを検索し、検索しませんC:\baz\

于 2018-12-20T19:53:08.887 に答える