【问题标题】:How to get Luabind properties to work?如何让 Luabind 属性工作?
【发布时间】:2013-01-30 23:42:42
【问题描述】:

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

功能:009EC440

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

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

现在我已经尝试过了,但我仍然遇到同样的错误。需要注意的另一件事是我使用的是 MSVC 2012,所以我尝试使用工具集 = 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

【问题讨论】:

    标签: c++ luabind


    【解决方案1】:

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

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2017-05-03
      • 1970-01-01
      • 1970-01-01
      • 2015-03-23
      • 1970-01-01
      • 2011-09-06
      • 2011-04-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多