2015-07-20 2 views
1

Je viens de commencer à travailler avec Luabind, et j'ai essayé d'exécuter le test Hello World spécifié au http://www.rasterbar.com/products/luabind/docs.html#calling-lua-functions. Toutefois, cela fournit une erreur de symbole indéfinie lors de la tentative de compilation.Luabind Symboles indéfinis/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) 

D'autres fonctions telles que luabind :: ouvert et luabind :: travail call_function correctement.

J'ai installé à la fois luabind et lua 5.1 via homebrew sur osx.

Répondre

0

Il me semble que vous compilez votre programme contre libC++ et que vous essayez de lier une bibliothèque luabind qui a été compilée avec la bibliothèque stdlibC++.

L'indice est std :: __ 1 :: auto_ptr. Cet espace de noms en ligne __1 est utilisé par libC++ pour le différencier ABI est de stdlibC++

Ainsi, si

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

Ne peut pas être trouvé, il est probable que libluabind ne l'a pas. Dumping il est exporté symboles que vous pourriez trouver il a

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

À la place.

Si j'ai raison, recompilez simplement libluabind en ciblant libC++ et vous devriez trouver que cela fonctionne avec votre programme de test.