1

我刚刚开始使用 Luabind,并尝试运行http://www.rasterbar.com/products/luabind/docs.html#calling-lua-functions中指定的 Hello World 测试。但是,这会在尝试编译时提供未定义的符号错误。

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 可以正常工作。

我通过 osx 上的自制软件安装了 luabind 和 lua 5.1。

4

1 回答 1

0

在我看来,您正在针对 libc++ 编译程序并尝试链接到针对 stdlibc++ 库编译的 luabind 库。

线索是 std::__1::auto_ptr。libc++ 使用这个 __1 内联命名空间来区分它的 ABI 和 stdlibc++

因此,如果

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

找不到可能是因为 libluabind 没有它。转储它的导出符号,您可能会发现它有

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

反而。

如果我是对的,只需重新编译针对 libc++ 的 libluabind,您应该会发现它适用于您的测试程序。

于 2015-12-08T13:28:10.157 回答