首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >luabind::object的奇怪问题

luabind::object的奇怪问题
EN

Stack Overflow用户
提问于 2011-08-30 04:48:51
回答 1查看 657关注 0票数 1

我目前使用的是luabind,特别是https://github.com/rpavlik/luabind,因为官方发布的版本已经过时,不再使用最新版本的boost进行编译。

我遇到了一个非常奇怪的问题,我在网上找不到。我设法将这个案例简化为一个非常简单的场景。

在一个模块中,我将拥有:

代码语言:javascript
复制
luabind::object value;

void functionA() {
    lua_pushstring(L,"yo");
    luabind::object temp(luabind::from_stack(L,-1));
    value = temp;
}

在另一个模块中,我将拥有:

代码语言:javascript
复制
void functionB() {
    printf("My Value: %s\n",luabind::object_cast<const char*>(value));
    printf("My Original value type: %d\n",luabind::type(value));
    value.push(L);
    luabind::object a1(luabind::from_stack(L,-1));
    printf("My Copy value type: %d\n",luabind::type(a1));
}

当我从lua中提供functionA和functionB并连续调用它们时,输出将是:

代码语言:javascript
复制
My Value: yo
My Original value type: 4
My Copy value type: 0

如您所见,该对象仍然引用了luabind可以打印的内容。但是,当我尝试将其推送到堆栈上并从堆栈对象创建一个新对象时,结果将是nil值。

这种情况只发生在这种特定的情况下。当我把所有东西都放到一个函数中时,它工作得很好。当我将代码放入同一模块的函数中时,它会工作得很好。我还没有做一个独立的测试项目,但我想不出我的代码中有任何干扰,这些函数是从lua直接连续调用的。

我做错了什么吗?或者这是一个bug?如果是个bug,我怎么从来没听说过这样的东西呢?

EN

回答 1

Stack Overflow用户

发布于 2011-09-01 05:03:40

看起来我的测试用例并不完整。functionB还需要位于由luabind包装的类中。我可以通过使类中的函数成为代理函数,并调用包含我的代码的全局函数来“解决”这个问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7235811

复制
相关文章

相似问题

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