2015-07-20 2 views
1

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

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 :: открытым и Luabind :: call_function работать правильно.

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

ответ

0

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