我正在尝试使用luabind来完成教程,http://www.rasterbar.com/products/luabind/docs.html,但是我在加载库时遇到了问题。我目前使用的是5.1版本的lua,所以我相信我会使用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()它声明greet为nil。如何正确地从dll加载函数?
发布于 2012-05-12 14:36:06
从package.loadlib's documentation的前两句话
将主机程序与C库
libname动态链接。在这个库中,查找函数funcname,将此函数作为C函数返回。
(已添加强调)
这不会执行funcname。它只是将其作为一个函数返回,供您调用。你还是得把它叫做:
package.loadlib("LuaTestLib.dll", "init")()https://stackoverflow.com/questions/10561159
复制相似问题