2013-02-15 4 views
2

Я пытаюсь использовать свойства Luabind при импорте класса. Определения все правильно, в этом я уверен, но, когда я звоню на имущество, например, для печати, если это строка или число, я получаю что-то вроде этой функцииКак заставить свойства Luabind работать?

: 009EC440

Теперь я понятия не имею, почему это происходит, но я просмотрел в Интернете и нашел нескольких людей с той же проблемой. Они говорят, что вы должны построить Luabind с этими параметрами:

bjam набор инструментов = 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) 
]; 

И они пытаются получить доступ, как это так, с оружием является экземпляром класса оружия, как заявлено с им конструктору:

print(weapon.modifier) 
weapon.onFire = onFire 

Статически работы, но я хотел бы, чтобы заставить его работать с динамической компоновки, нно г эти параметры:

bjam набор инструментов = MSVC-9,0 = вариант отладки резьбонарезной = мульти ссылка = статические определить = _BIND_TO_CURRENT_VCLIBS_VERSION

ответ

1

Я имел такую ​​же проблему на VS2008. (это 6 месяцев после сообщения, но может помочь кому-то еще)

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

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

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

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

Смежные вопросы