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

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

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++, и вы обнаружите, что он работает с вашей тестовой программой.

Другие вопросы по тегам