LuaBind和package.loadlib(LuaBind and package.loadli

2019-09-17 04:27发布

我试图去通过与luabind这里,教程http://www.rasterbar.com/products/luabind/docs.html ,但是我无法加载库。 我目前使用的Lua 5.1版本,所以我相信我会改用LOADLIB的package.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加载正确的功能?

Answer 1:

从第一两句package.loadlib的文档 :

动态链接与C库中的主机程序libname 。 这个库中,寻找一个函数funcname ,并返回该功能作为C函数

(强调)

这不执行 funcname 。 它只是简单地返回它作为你调用一个函数。 你仍然需要调用它:

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


文章来源: LuaBind and package.loadlib
标签: lua luabind