gpt4 book ai didi

c++ - 如何让 Luabind 属性发挥作用?

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:28:59 25 4
gpt4 key购买 nike

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

function: 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 构建它,但同样无济于事。我读过,如果您不使用 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 toolset=msvc-9.0 variant=debug threading=multi link=static define=_BIND_TO_CURRENT_VCLIBS_VERSION

最佳答案

我在 VS2008 上遇到了同样的问题。 (发布后 6 个月,但可能对其他人有帮助)

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

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

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

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

关于c++ - 如何让 Luabind 属性发挥作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14887246/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com