LuaBind and package.loadlib

▼魔方 西西 提交于 2019-12-08 04:18:40

问题


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?


回答1:


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")()


来源:https://stackoverflow.com/questions/10561159/luabind-and-package-loadlib

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!