C++ 如何使Luabind属性正常工作?

C++ 如何使Luabind属性正常工作?,c++,luabind,C++,Luabind,我试图在导入类时使用Luabind的属性。我确信这些定义都是正确的,但是当我调用一个属性时,比如如果它是一个字符串或数字就打印它,我会得到这样的结果 功能:009EC440 现在我不知道为什么会发生这种情况,但我在互联网上四处寻找,发现有几个人有同样的问题。他们说您应该使用以下参数构建Luabind: bjam toolset=msvc-9.0 variant=debug threading=multi-link=shared define=\u BIND\u TO\u CURRENT\u VC

我试图在导入类时使用Luabind的属性。我确信这些定义都是正确的,但是当我调用一个属性时,比如如果它是一个字符串或数字就打印它,我会得到这样的结果

功能:009EC440

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

bjam toolset=msvc-9.0 variant=debug threading=multi-link=shared define=\u BIND\u TO\u CURRENT\u VCLIBS\u VERSION

现在我已经试过了,但仍然会出现同样的错误。另一件需要注意的事情是,我正在使用MSVC 2012,所以我尝试使用toolset=MSVC-11.0构建它,但同样没有效果。我已经读到,如果您不使用Boost build来构建您的项目,那么您需要定义LUABIND\u DYNAMIC\u链接,在包含LUABIND之前,我也已经这样做了。这仍然导致了这个错误。我自己也尝试过构建Luabind,但在链接它时遇到了麻烦,因为它会引起许多符号错误(我不确定在哪里定义Luabind\u DYNAMIC\u LINK,所以如果有人知道这可能会解决问题)。有人知道如何解决这个问题吗


以下是用于声明属性的代码:

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

静态链接可以工作,但我希望使用以下参数使其与动态链接一起工作:

bjam toolset=msvc-9.0 variant=debug threading=multi-link=static define=\u BIND\u TO\u CURRENT\u VCLIBS\u VERSION


我在VS2008上也遇到了同样的问题。(这是职位后的6个月,但可能会帮助其他人)

我通过添加LUABIND\u DYNAMIC\u LINK预处理器指令修复了它

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

将LUABIND\u DYNAMIC\u LINK添加到预处理器定义列表中

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

print(weapon.modifier)
weapon.onFire = onFire