【发布时间】: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
【问题讨论】: