Re: attempt to concatenate field 'value' (a function value)

Andreas Grob <[email protected]> Sat, 01 Nov 2014 20:34:42 +0100
Newsgroups gmane.comp.lang.lua.bind.user
Message-ID <[email protected]>
I can confirm your error with luabind 0.9.1+dfsg-8, which is what Mint 
17 is using.
An update of libluabind and libluabind-dev to 0.9.1+dfsg-9 (from debian 
sid) resolves the problem.

Regards,
Andreas

Am 01.11.2014 um 19:42 schrieb [email protected]:
> oops, I had missed that out of the simplified test case, however it still
> isn't working for me after adding that in :(.
>
> I guess lua or luabind is broken on my system (Linux Mint 17)
>
>> Hello,
>>
>> Your Lua code should not be working at all, since no libraries are
>> loaded and print isn't even defined.
>> After adding luaL_openlibs(L); after creating the Lua state, it works
>> fine for me:
>>
>> $ ./lua
>> value : 4
>>
>> Regards,
>> Andreas
>>
>>
>> Am 01.11.2014 um 18:45 schrieb [email protected]:
>>> Can anybody explain this for me? It used to work on an older system with
>>> lua5.1.
>>>
>>> i'm now using lua5.2, luabind version us 0.9.1 (on both systems)
>>>
>>> g++ -o lua lua.cpp -lluabind -llua5.2 -ldl -I /usr/include/lua5.2
>>> ./lua
>>> lua runtime error
>>> [string "function test(t)..."]:2: attempt to concatenate field 'value'
>>> (a
>>> function value)
>>>
>>> extern "C" {
>>> #include "lua.h"
>>> #include "lualib.h"
>>> #include "lauxlib.h"
>>> }
>>>
>>> #include <luabind/luabind.hpp>
>>> #include <iostream>
>>>
>>> struct Test
>>> {
>>>     Test(int v) : value(v) {};
>>>     ~Test() {};
>>>     int value;
>>> };
>>>
>>>
>>> int DebuggerFunc(lua_State* L)
>>> {
>>> 	luabind::object error_msg(luabind::from_stack(L, -1));
>>> 	std::cerr << error_msg << std::endl;
>>> 	return 0;
>>> }
>>>
>>> int main() {
>>>     lua_State *L = luaL_newstate();
>>>     luabind::open(L);
>>>
>>>     luabind::module(L)
>>>     [
>>>       luabind::class_<Test>("Test")
>>>       .def(luabind::constructor<int>())
>>>       .def_readonly("value",&Test::value)
>>>     ];
>>>
>>>     luaL_dostring(
>>>       L,
>>>       "function test(t)\n"
>>>       "  print(\"value : \" .. t.value)\n"
>>>       "end\n"
>>>     );
>>>
>>>     Test t(4);
>>>
>>>     try {
>>>       luabind::call_function<int>(L, "test", &t);
>>>     }
>>>     catch (const luabind::error &er)
>>>     {
>>>       std::cerr << er.what() << std::endl;
>>>       lua_State* Ler=er.state();
>>>       DebuggerFunc(Ler);
>>>     }
>>>     catch (...)
>>>     {
>>>       std::cerr << "Unknown error!" << std::endl;
>>>     }
>>>     lua_close(L);
>>> }
>>>
>>>
>>> ------------------------------------------------------------------------------
>>> _______________________________________________
>>> luabind-user mailing list
>>> [email protected]
>>> https://lists.sourceforge.net/lists/listinfo/luabind-user
>>
>> ------------------------------------------------------------------------------
>> _______________________________________________
>> luabind-user mailing list
>> [email protected]
>> https://lists.sourceforge.net/lists/listinfo/luabind-user
>>
>
>
> ------------------------------------------------------------------------------
> _______________________________________________
> luabind-user mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/luabind-user


------------------------------------------------------------------------------