我在导入类时尝试使用 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