Access violation when exporting a C++ class to Lua using LuaBind
我正在尝试使用LuaBind将简单的类导出到Lua。 我从两个站点获取了代码,这些代码显示出大致相同的方法,但是仍然失败。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 | // Default headers #include <iostream> #include <string> // Lua headers extern"C" { #include"lua.h" #include"lualib.h" #include"lauxlib.h" } #include"luabind/luabind.hpp" // Sample class class NumberPrinter { public: NumberPrinter( int number ) : m_number( number ) {} void print() { std::cout << m_number <<"\ "; } private: int m_number; }; int main() { // Create Lua state and load sample file lua_State *luaState = lua_open(); luabind::open( luaState ); // Set up bind to number class luabind::module( luaState ) [ luabind::class_<NumberPrinter>("NumberPrinter" ) .def( luabind::constructor<int>() ) .def("print", &NumberPrinter::print ) ]; // Use the class in Lua luaL_dostring( luaState, "Print2000 = NumberPrinter(2000)\ " "Print2000:print()\ " ); // Clean up Lua state lua_close( luaState ); getchar(); return 0; } |
运行该代码时,luabind :: module会导致以下运行时错误,并且在调试模式下没有其他信息:
Unhandled exception at 0x690008f5 in
Lua Playground.exe: 0xC0000005: Access
violation.
我鼓励您从此网站上提供的二进制文件和示例VS2008解决方案开始使用。 它具有与您尝试运行的示例代码完全相同的示例代码(减去输入错误),并且在我的机器上运行良好。 如果仍然无法使用,则需要Lua社区的帮助。 可能需要一个小型转储来帮助他们进行诊断,仅异常消息是不够的。