2

我在导入类时尝试使用 Luabind 的属性。定义都是正确的,我敢肯定,但是当我调用一个属性时,例如如果它是一个字符串或数字就打印它,我会得到这样的东西

功能:009EC440

现在我不知道为什么会发生这种情况,但我在互联网上环顾四周,发现有几个人有同样的问题。他们说您应该使用以下参数构建 Luabind:

bjam 工具集=msvc-9.0 变体=调试线程=多链接=共享定义=_BIND_TO_CURRENT_VCLIBS_VERSION

现在我已经尝试过了,但我仍然得到同样的错误。另一件需要注意的是,我使用的是 MSVC 2012,所以我尝试使用 toolset=msvc-11.0 构建它,但再次无济于事。我已经读过,如果您不使用 Boost build 来构建您的项目,您需要定义 LUABIND_DYNAMIC_LINK,这在包含 Luabind 之前也已完成。这仍然导致此错误。我也尝试过自己构建 Luabind,但在链接它时遇到了麻烦,因为它会引发许多符号错误(我不确定在哪里定义 LUABIND_DYNAMIC_LINK,所以如果有人知道这可能会解决问题)。有谁知道如何解决这个问题?


下面是声明属性的代码:

luabind::module(luaState)[
luabind::class_<Weapon>("Weapon")
    .def(luabind::constructor<float, float>())
    .def_readwrite("onFire", &Weapon::onFireFunc)
    .def_readonly("modifier", &Weapon::modifier)
];

他们正试图像这样被访问,武器是 Weapon 类的一个实例,正如它的构造函数声明的那样:

print(weapon.modifier)
weapon.onFire = onFire

静态链接有效,但我想使用以下参数使其与动态链接一起使用:

bjam 工具集=msvc-9.0 变体=调试线程=多链接=静态定义=_BIND_TO_CURRENT_VCLIBS_VERSION

4

1 回答 1

1

我在VS2008上遇到了同样的问题。(这是发布后的 6 个月,但可能对其他人有所帮助

我通过添加 LUABIND_DYNAMIC_LINK 预处理器指令来修复它。

项目->属性->C/C++->预处理器

LUABIND_DYNAMIC_LINK添加到预处理器定义列表中。

我使用您在帖子顶部的相同 bjam 命令构建了 luabind。

于 2013-09-11T18:26:21.837 回答