Search code examples
lualuabind

LuaBind and package.loadlib


I'm trying to go through the tutorial with luabind here, http://www.rasterbar.com/products/luabind/docs.html, however i'm having trouble loading the library. I'm currently using version 5.1 of lua, so I believe I would use package.loadlib instead of loadlib. I made a simple dll which is this:

#include <iostream>
#include <luabind\luabind.hpp>

void greet()
{
std::cout << "Hello world!\n";
}

extern "C" int init(lua_State* L)
{
luabind::open(L);

luabind::module(L)
    [
        luabind::def("greet", &greet)
    ];


return 0;
}

This builds just fine. However I get an error in lua when I try to run this code:

package.loadlib("LuaTestLib.dll", "init")
greet()

It states that greet is nil. How do I load the functions from the dll properly?


Solution

  • From the first two sentences of package.loadlib's documentation:

    Dynamically links the host program with the C library libname. Inside this library, looks for a function funcname and returns this function as a C function.

    (emphasis added)

    This doesn't execute funcname. It simply returns it as a function for you to call. You still have to call it:

    package.loadlib("LuaTestLib.dll", "init")()