我正在尝试使用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中的函数?
答案 0 :(得分:2)
来自package.loadlib
's documentation的前两句话:
将主机程序与C库
libname
动态链接。在此库中,查找函数funcname
,将此函数作为C函数返回。
(强调补充)
这不是执行 funcname
。它只是将它作为一个函数返回给你调用。你仍然需要打电话:
package.loadlib("LuaTestLib.dll", "init")()