首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >LuaBind和package.loadlib

LuaBind和package.loadlib
EN

Stack Overflow用户
提问于 2012-05-12 12:48:33
回答 1查看 5K关注 0票数 1

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

代码语言:javascript
复制
#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中得到一个错误:

代码语言:javascript
复制
package.loadlib("LuaTestLib.dll", "init")
greet()

它声明greet为nil。如何正确地从dll加载函数?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-05-12 14:36:06

package.loadlib's documentation的前两句话

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

(已添加强调)

这不会执行funcname。它只是将其作为一个函数返回,供您调用。你还是得把它叫做:

代码语言:javascript
复制
package.loadlib("LuaTestLib.dll", "init")()
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10561159

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档