[Date Prev][Date Next][Thread Prev][Thread Next]
[Date Index]
[Thread Index]
- Subject: Re: problem using luaL_newstate
- From: Sam Roberts <sroberts@...>
- Date: Fri, 15 Sep 2006 13:30:58 -0700
On Fri, Sep 15, 2006 at 04:01:22PM -0300, Ricardo Sarmento wrote:
> If I use the correct syntax:
> lua_State *L=luaL_newstate();
> I get the follow error:
> /root/Ricardo/Outros/Lua/Kdevelop/teste/src/main.cpp:80: undefined reference to `luaL_newstate'
^^^^^
Are you really developing s/w as the root user? You may come to regret
that if you do.
> It seems like I haven't linked the correct library, but if I use the wrong syntax:
> lua_State *L=luaL_newstate("something");
> I get the follow error:
> /usr/local/include/lauxlib.h:82: error: too many arguments to function â??lua_State* luaL_newstate()â??
>
> Then, I'm confuse: If the library is wrongly linked, gcc wouldn't know how much arguments are asked by luaL_newstate, right?
No, c compilers find out how many args are expected from the headers,
and /usr/local/include is in your header search path, so luaxlib.h is
found. But the header doesn't tell it the library name.
You need to link the lua library that defines luaL_newstate. On my
system 5.0 and 5.1 are both installed:
% ls /usr/lib/liblua*.a
/usr/lib/liblua5.1.a
/usr/lib/liblualib50.a
/usr/lib/liblua50.a
For 5.0, I would have to add -llua50 and -llualib50 to my link flags.
For 5.1, I would just add -llua5.1.
The name used for the lua libs varies a lot across platforms, you'll
have to look to see what they are called on your box.
Cheers,
Sam