Я пытаюсь использовать свойства Luabind при импорте класса. Все определения верны, в этом я уверен, но когда я вызываю свойство, например, для его печати, если это строка или число, я получаю что-то вроде этого
функция: 009EC440
Теперь я понятия не имею, почему это происходит, но я посмотрел в Интернете и нашел несколько человек с такой же проблемой. Они говорят, что вы должны собрать Luabind с этими параметрами:
bjam toolset = msvc-9.0 вариант = многопоточность отладки = общая ссылка = общее определение = _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 вариант = многопоточность отладки = статическая ссылка = статическое определение = _BIND_TO_CURRENT_VCLIBS_VERSION
У меня была такая же проблема на VS2008. (это 6 мес после поста, но может помочь кому-то еще)
Я исправил это, добавив директиву препроцессора LUABIND_DYNAMIC_LINK.
Проект-> свойства-> C / C ++ -> Preprocessor
добавлять LUABIND_DYNAMIC_LINK к списку определений препроцессора.
Я собрал luabind, используя ту же команду bjam, что и в начале вашего поста.
Других решений пока нет …