bir çok temel bir soru sanırım:luabind: print gibi temel lua işlevlerini arayamaz, toString
C++ kodu, lua çağırarak şöyle:
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);
şimdi test.lua vardır aşağıdaki içeriği:
test.lua:2: attempt to call global 'print' (a nil value)
: yürütme üzerine
function main()
print "1"
end
hatası almak
Sorun nedir? Ortamlarla ilgisi var mı? Baskı gibi işlevlerin küresel ortamda tanımlandığını düşündüm. O zaman neden bulunamadı?
Çok teşekkür ederim.
tamam anladım: luaopen_base (m_L); lua_open() –
'dan sonra çağrılması gerekenler, luaopen_string (m_L), luaopen_math (m_L) vb. öğelerini çağırmak zorundasınız. –
@ chris.schuette: Kendi sorunuzu cevaplamalısınız ve bu cevabı kabul etmelisiniz (böylece soruyu tamamlandı olarak işaretleyiniz) veya soruyu silin. –