Question

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?

Was it helpful?

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")()
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top