我在导入类时尝试使用Luabind的属性。我确定这些定义都是正确的,但是当我调用一个属性时,比如打印它,如果它是一个字符串或数字,我得到这样的东西
功能:009EC440
现在我不知道为什么会发生这种情况,但我已经在互联网上四处寻找并发现了几个有同样问题的人。他们说你应该用这些参数构建Luabind:
bjam toolset = msvc-9.0 variant = debug threading = multi link = shared define = _BIND_TO_CURRENT_VCLIBS_VERSION
现在我尝试了这个,但我仍然得到同样的错误。另外需要注意的是我正在使用MSVC 2012,因此我尝试使用toolset = msvc-11.0构建它,但是再次无济于事。我已经读过你需要定义LUABIND_DYNAMIC_LINK,如果你没有使用Boost构建来构建你的项目,我在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 toolset = msvc-9.0 variant = debug threading = multi link = static define = _BIND_TO_CURRENT_VCLIBS_VERSION
答案 0 :(得分:1)
我在VS2008上遇到了同样的问题。 (这是帖子后的6个月,但可以帮助其他人)
我通过添加LUABIND_DYNAMIC_LINK预处理程序指令来修复它。
<强>项目 - &GT;属性 - &GT; C / C ++ - &GT;预处理强>
将 LUABIND_DYNAMIC_LINK 添加到预处理程序定义列表中。
我使用你帖子顶部的bjam命令构建了luabind。