2013-02-15 55 views
2

我想在导入类时使用Luabind的属性。该定义是正确的,这个我相信,但是当我呼吁的属性,例如,如果它是一个字符串或数字将其打印出来,我得到这样的事情如何让Luabind属性起作用?

功能:009EC440

现在我不知道为什么会发生这种情况,但是我在互联网上四下张望,发现几个人有同样的问题。他们说,你应该建立Luabind与这些参数:

的bjam工具集= MSVC 9.0变异=调试线程=多链接=共享定义= _BIND_TO_CURRENT_VCLIBS_VERSION

现在,我已经试过了,但我仍然得到同样的错误。还有一点需要注意的是,我使用的是MSVC 2012,所以我试图用toolset = msvc-11.0来构建它,但是仍然无济于事。如果您不使用Boost构建来构建您的项目,我已经阅读过您需要定义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) 
]; 

他们正在尝试,用的武器是因为它的构造函数声明的武器类的一个实例:

print(weapon.modifier) 
weapon.onFire = onFire 

静态链接的作品,但我想,使其与动态链接工作,全光照克这些参数:

的bjam工具集= MSVC-9.0变体=调试线程=多连杆=静态限定= _BIND_TO_CURRENT_VCLIBS_VERSION

回答

1

我对VS2008同样的问题。 (这是帖子后6 mos,但可能会帮助其他人

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

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

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

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