2016-05-15 29 views
2

これはC++からlua関数を呼び出す方法ではありません。私はすでにそれを成功させることができます。これは、C++によって呼び出される関数で使用されても機能しなくなるlua関数 "loadfile"に関するものです。C++からlua関数を呼び出すときの "エラー処理エラー"

私はその関数を呼び出すことができるように、別のluaファイルにluaファイルをロードしようとしています。もしfunction.luaからgame.luaにtest()を移動させると、ミストリングは "test"をうまく受け取ります。エラーの」エラーを生成

  1. ロードファイルは、もはや動作しているようです、ただし

    、私はgame.luaファイルには、init()関数を追加し、テストを動かす()functions.luaファイルに

  2. test()が動作しません(おそらく失敗したロードファイルのため)。これは "エラー処理中のエラー"メッセージにもなります。

C++:

// Having loaded game.lua... 
state["init"](); 
std::string mystring = state["test"](); 

game.lua:

function init() 
    loadfile("functions.lua")() 
end 

functions.lua:

function test() 
    return "test" 
end 

エラー:

"Error in error handling" 

私は単純に行うことによって、このLuaのスクリプトをテストするためにZeroBraneを使用します。

init() 
print(test()) 

それはすべてが正常に動作します...ので、私はどちらかだどのように何か問題がありますC++を使用するか、またはluaファイルを使用します。

私はここで間違っていますか?このように使用すると、loadfileが動作しないのはなぜですか? luaは、C++によって開始された通常の関数を見る点に初期化されていませんか?ロードファイルがZeroBrane経由で動作するのは本当に奇妙ですが、C++では動作しません。

私はを使用しています。これはC++ 11のヘッダ専用のLuaへのバインディングです。

答えて

0

ルアコンテキストを確立することを忘れないでください!

確立Luaのコンテキスト

using namespace sel; 
State state; // creates a Lua context 
State state{true}; // creates a Lua context and loads standard Lua libraries 
関連する問題