Как заставить свойства Luabind работать?

Я пытаюсь использовать свойства 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

2

Решение

У меня была такая же проблема на VS2008. (это 6 мес после поста, но может помочь кому-то еще)

Я исправил это, добавив директиву препроцессора LUABIND_DYNAMIC_LINK.

Проект-> свойства-> C / C ++ -> Preprocessor

добавлять LUABIND_DYNAMIC_LINK к списку определений препроцессора.

Я собрал luabind, используя ту же команду bjam, что и в начале вашего поста.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]