LuaBind和package.loadlib

时间:2012-05-12 04:48:33

标签: lua luabind

我正在尝试使用luabind在http://www.rasterbar.com/products/luabind/docs.html进行教程,但是我在加载库时遇到了问题。我目前正在使用lua的5.1版,所以我相信我会使用package.loadlib而不是loadlib。我做了一个简单的dll:

#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;
}

这构建得很好。但是当我尝试运行此代码时,我在lua中收到错误:

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

它表示问候是零。如何正确加载dll中的函数?

1 个答案:

答案 0 :(得分:2)

来自package.loadlib's documentation的前两句话:

  

将主机程序与C库libname动态链接。在此库中,查找函数funcname将此函数作为C函数返回

(强调补充)

这不是执行 funcname。它只是将它作为一个函数返回给你调用。你仍然需要打电话:

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