2013-06-03 1 views
1

Я долгое время боролся. Всякий раз, когда я пытаюсь определить класс в Luabind я получаю ошибки подтвержденияLuaBind assert (id <local_id_base)

assert(id < local_id_base) in inheritance.hpp (luabind) 

Я Пробовал много разных Luabind вилок без какого-либо успеха. Хотя все они были собраны с повышением 1,53 и Visual Studio 2012. Также с Lua 5.2.1

Это код, я использую, только для

extern "C" 
{ 
#include "lua.h" 
#include "lauxlib.h" 
#include "lualib.h" 
} 

#include <luabind/luabind.hpp> 
#include <luabind/class.hpp> 
#include <luabind/function.hpp> 
#include <luabind/object.hpp> 


    class TestStruct 
    { 
    public: 
     TestStruct(const std::string& s): m_string(s) {} 
     void printmsg() { printf("Works"); }; 
    private: 
     int i; 
     std::string m_string; 
    }; 


int APIENTRY _tWinMain(_In_ HINSTANCE hInstance, 
         _In_opt_ HINSTANCE hPrevInstance, 
         _In_ LPTSTR lpCmdLine, 
         _In_ int  nCmdShow) 
{ 
    UNREFERENCED_PARAMETER(hPrevInstance); 
    UNREFERENCED_PARAMETER(lpCmdLine); 

    lua_State* L = luaL_newstate(); 

    luaopen_io (L); 
    luaopen_base(L); 
    luaopen_table(L); 
    luaopen_string(L); 
    luaopen_math(L); 

    using namespace luabind; 

    open(L); 

    module(L) 
     [ 
      class_<TestStruct>("TestStruct") 
      .def(constructor<const std::string&>()) 
      .def("printmsg", &TestStruct::printmsg) 


     ]; 


    lua_close(L); 

    return 0; 
} 

[РЕШИТЬ]

После прочтения я почти ничего не получил. Так что я сделал, чтобы построить LuaBind и Lua 5.2.2 в том же проекте, создав один lib вместо двух отдельных.

ответ

0

Ваш класс является локальным, поэтому его нельзя увидеть в шаблонах LuaBind. Переместите класс из main().

Если это не поможет, проверьте, если вы построили Luabind правильно - http://www.ogre3d.org/forums/viewtopic.php?f=2&t=75829

+0

Не видеть, что (будет редактировать свой пост) Хотя это не проблема. – Meanz

Смежные вопросы