lua-users home
lua-l archive

Re: [Newbie] Including a lua file from another lua file (problems with paths)

[Date Prev][Date Next][Thread Prev][Thread Next] [Date Index] [Thread Index]


2009年7月16日 Antoine Bruguier <Antoine.Bruguier@brion.com>:
> Hello,
>
> I am having a problem with including other Lua files from a Lua file because of inconsistent paths. Here's are the three files that I have:
> ---- main.cc ---
> {
> ...
> luaL_loadfile(L, "subdir/hello.lua");
> lua_pcall(L, 0, LUA_MULTRET, 0);
> ...
> }
> ---- subdir/hello.lua ---
> ...
> dofile('subhello.lua');
> ...
> ---- subdir/subhello.lua ---
> ...
> print('Hello world');
> ...
> ---- -----
>
> However, this fails with the message:
> cannot read subhello.lua: No such file or directory
>
> I have trolled the web for an answer, but I can't find anything. It seems there are three ways to include a lua file
> * dofile
> * loadfile
> * require
>
> However, none is relative to the current Lua source file. Of course, I could do a dofile('subdir/subhello.lua'); but that doesn't help me, because the name of 'subdir' is not known until runtime.
>
> Is there any way to get around this? A workaround would be to get the current's file path and concatenate the strings, but I haven't found a way to do that either.
Try modules and require:
---- main.cc ---
{
...
 lua_getglobal(L, "require");
 lua_pushstring(L, "subdir.hello");
 lua_pcall(L, 1, LUA_MULTRET, 0);
...
}
---- subdir/hello.lua ---
...
 module(..., package.seeall)
 require(_PACKAGE..'subhello');
...
---- subdir/subhello.lua ---
...
 print('Hello world');
...
---- -----

AltStyle によって変換されたページ (->オリジナル) /