Неопределенные символы Luabind / Luabind :: scope :: scope

Я только начал работать с Luabind и попытался запустить тест Hello World, указанный в http://www.rasterbar.com/products/luabind/docs.html#calling-lua-functions. Тем не менее, это обеспечивает неопределенную ошибку символа при попытке компиляции.

Undefined symbols for architecture x86_64:
"luabind::scope::scope(std::__1::auto_ptr<luabind::detail::registration>)", referenced from:
luabind::scope luabind::def<void (*)(), luabind::detail::null_type>(char const*, void (*)(), luabind::detail::null_type const&) in TestClass.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

Другие функции, такие как luabind :: open и luabind :: call_function, работают правильно.

Я установил luabind и lua 5.1 через homebrew на osx.

1

Решение

Мне кажется, что вы компилируете свою программу для libc ++ и пытаетесь связать ее с библиотекой luabind, которая была скомпилирована с библиотекой stdlibc ++.

Ключом является std :: __ 1 :: auto_ptr. Это встроенное пространство имен __1 используется libc ++, чтобы отличать его ABI от stdlibc ++

Таким образом, если

luabind::scope::scope(std::__1::auto_ptr<luabind::detail::registration>)

Не может быть найдено, вероятно, потому что libluabind не имеет его. Сбрасывает экспортированные символы, которые вы можете найти

luabind::scope::scope(std::auto_ptr<luabind::detail::registration>)

Вместо.

Если я прав, просто перекомпилируйте libluabind для libc ++, и вы обнаружите, что он работает с вашей тестовой программой.

0

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


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