5

私が推測する非常に基本的な質問:

luaを呼び出すC++コードは、次のようになります。

lua_State* m_L;
m_L = lua_open();
luabind::open(m_L);
luaL_dofile(m_L, "test.lua");
try {
    luabind::call_function<void>(m_L, "main");
} catch (luabind::error& e) {
    std::string error = lua_tostring(e.state(), -1);
    std::cout << error << std::endl;
}
lua_close(m_L);

現在、test.luaには次の内容が含まれています。

function main()
print "1"
end

実行すると、次のエラーが発生します。

test.lua:2: attempt to call global 'print' (a nil value)

何が問題ですか?それは環境と関係がありますか?印刷のような機能は地球環境で定義されていると思いました。なぜそれが見つからないのですか?

どうもありがとうございます。

4

1 に答える 1

6

あなたがそれを理解したように、あなたはluaopen_basegetprintと他の基本関数を呼び出す必要があります。次に、、を呼び出して、基本的なモジュールと関数を取り込む必要がありますluaopen_stringluaopen_mathすべてを手動で書き出す代わりに、すべてのLua基本関数を一度にロードできますluaL_openlibs

lua_State* m_L = luaL_newstate();
luaL_openlibs(m_L);
于 2012-02-25T17:34:03.800 に答える