【问题标题】:Game with Google Analytics failing to build due to linker errors由于链接器错误,使用 Google Analytics 构建的游戏失败
【发布时间】:2015-11-05 00:06:41
【问题描述】:

我正在做一个统一项目,它是一款在移动设备上玩的 AR 游戏。它使用 vuforia 作为 AR 部分。最近我添加了 Google Analytics for Unity(来自开发者网站的 googleanalyticsv3.unitypackage)。之后,当我尝试在 iOS 上构建时,我收到很多“Apple Mach-O Linker”错误(Android 仍然可以正常构建)。我可以通过添加必要的框架来删除其中的一些,但我仍然有大约 50 个。我添加了 libsqlite3.dylib、libz.dylib、SystemConfiguration.framework 和 CoreData.framework。然后我还添加了 security.framework,这似乎也减少了构建错误。然后,在添加 Analytics 之前,我返回了该项目的一些提交,它仍然在相同的 Unity 和 Xcode 版本上构建良好。

下面粘贴的是我得到的错误:

Undefined symbols for architecture armv7:
  "std::__1::basic_streambuf<char, std::__1::char_traits<char> >::imbue(std::__1::locale const&)", referenced from:
      vtable for std::__1::basic_stringbuf<char, std::__1::char_traits<char>, std::__1::allocator<char> > in libVuforia.a(libVuforia.a-armv7-master.o)
  "std::__1::basic_streambuf<char, std::__1::char_traits<char> >::xsgetn(char*, int)", referenced from:
      vtable for std::__1::basic_stringbuf<char, std::__1::char_traits<char>, std::__1::allocator<char> > in libVuforia.a(libVuforia.a-armv7-master.o)
  "std::__1::basic_streambuf<char, std::__1::char_traits<char> >::uflow()", referenced from:
      vtable for std::__1::basic_stringbuf<char, std::__1::char_traits<char>, std::__1::allocator<char> > in libVuforia.a(libVuforia.a-armv7-master.o)
  "std::__1::mutex::~mutex()", referenced from:
      StateHolder::~StateHolder() in libQCARUnityPlayer.a(Tracker.o)
  "std::__1::basic_istream<char, std::__1::char_traits<char> >::~basic_istream()", referenced from:
      construction vtable for std::__1::basic_istream<char, std::__1::char_traits<char> >-in-std::__1::basic_istringstream<char, std::__1::char_traits<char>, std::__1::allocator<char> > in libVuforia.a(libVuforia.a-armv7-master.o)
  "std::__1::basic_istream<char, std::__1::char_traits<char> >::operator>>(double&)", referenced from:
      l12812 in libVuforia.a(libVuforia.a-armv7-master.o)
  "std::__1::ios_base::clear(unsigned int)", referenced from:
      l12810 in libVuforia.a(libVuforia.a-armv7-master.o)
      l18582 in libVuforia.a(libVuforia.a-armv7-master.o)
      l18591 in libVuforia.a(libVuforia.a-armv7-master.o)
      l18597 in libVuforia.a(libVuforia.a-armv7-master.o)
      l18730 in libVuforia.a(libVuforia.a-armv7-master.o)
  "std::__1::basic_istream<char, std::__1::char_traits<char> >::~basic_istream()", referenced from:
      construction vtable for std::__1::basic_istream<char, std::__1::char_traits<char> >-in-std::__1::basic_istringstream<char, std::__1::char_traits<char>, std::__1::allocator<char> > in libVuforia.a(libVuforia.a-armv7-master.o)
  "std::__1::cerr", referenced from:
      l12812 in libVuforia.a(libVuforia.a-armv7-master.o)
      l12905 in libVuforia.a(libVuforia.a-armv7-master.o)
      l18649 in libVuforia.a(libVuforia.a-armv7-master.o)
  "std::__1::basic_ostream<char, std::__1::char_traits<char> >::sentry::sentry(std::__1::basic_ostream<char, std::__1::char_traits<char> >&)", referenced from:
      l18730 in libVuforia.a(libVuforia.a-armv7-master.o)
  "std::__1::basic_istream<char, std::__1::char_traits<char> >::tellg()", referenced from:
      l12812 in libVuforia.a(libVuforia.a-armv7-master.o)
  "std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::push_back(char)", referenced from:
      l18591 in libVuforia.a(libVuforia.a-armv7-master.o)
      l18597 in libVuforia.a(libVuforia.a-armv7-master.o)
      l18636 in libVuforia.a(libVuforia.a-armv7-master.o)
  "std::__1::basic_ostream<char, std::__1::char_traits<char> >::put(char)", referenced from:
      l12812 in libVuforia.a(libVuforia.a-armv7-master.o)
      l12922 in libVuforia.a(libVuforia.a-armv7-master.o)
      l18649 in libVuforia.a(libVuforia.a-armv7-master.o)
  "std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::resize(unsigned long, char)", referenced from:
      l18629 in libVuforia.a(libVuforia.a-armv7-master.o)
      l18636 in libVuforia.a(libVuforia.a-armv7-master.o)
  "std::__1::basic_istream<char, std::__1::char_traits<char> >::sentry::sentry(std::__1::basic_istream<char, std::__1::char_traits<char> >&, bool)", referenced from:
      l18582 in libVuforia.a(libVuforia.a-armv7-master.o)
      l18591 in libVuforia.a(libVuforia.a-armv7-master.o)
      l18597 in libVuforia.a(libVuforia.a-armv7-master.o)
  "std::__1::basic_streambuf<char, std::__1::char_traits<char> >::showmanyc()", referenced from:
      vtable for std::__1::basic_stringbuf<char, std::__1::char_traits<char>, std::__1::allocator<char> > in libVuforia.a(libVuforia.a-armv7-master.o)
  "std::__1::ios_base::__set_badbit_and_consider_rethrow()", referenced from:
      l18582 in libVuforia.a(libVuforia.a-armv7-master.o)
      l18591 in libVuforia.a(libVuforia.a-armv7-master.o)
      l18597 in libVuforia.a(libVuforia.a-armv7-master.o)
      l18730 in libVuforia.a(libVuforia.a-armv7-master.o)
  "std::__1::__next_prime(unsigned long)", referenced from:
      l18338 in libVuforia.a(libVuforia.a-armv7-master.o)
      l18347 in libVuforia.a(libVuforia.a-armv7-master.o)
      l18357 in libVuforia.a(libVuforia.a-armv7-master.o)
  "std::__1::basic_streambuf<char, std::__1::char_traits<char> >::sync()", referenced from:
      vtable for std::__1::basic_stringbuf<char, std::__1::char_traits<char>, std::__1::allocator<char> > in libVuforia.a(libVuforia.a-armv7-master.o)
  "std::__1::basic_ostream<char, std::__1::char_traits<char> >::operator<<(double)", referenced from:
      l12922 in libVuforia.a(libVuforia.a-armv7-master.o)
  "std::__1::ios_base::init(void*)", referenced from:
      l12812 in libVuforia.a(libVuforia.a-armv7-master.o)
      l12858 in libVuforia.a(libVuforia.a-armv7-master.o)
  "std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::compare(char const*) const", referenced from:
      l12804 in libVuforia.a(libVuforia.a-armv7-master.o)
      l12809 in libVuforia.a(libVuforia.a-armv7-master.o)
      l12812 in libVuforia.a(libVuforia.a-armv7-master.o)
  "std::__1::basic_ostream<char, std::__1::char_traits<char> >::operator<<(int)", referenced from:
      l12922 in libVuforia.a(libVuforia.a-armv7-master.o)
      l18649 in libVuforia.a(libVuforia.a-armv7-master.o)
  "std::__1::basic_istream<char, std::__1::char_traits<char> >::operator>>(int&)", referenced from:
      l12806 in libVuforia.a(libVuforia.a-armv7-master.o)
      l12809 in libVuforia.a(libVuforia.a-armv7-master.o)
      l12812 in libVuforia.a(libVuforia.a-armv7-master.o)
  "non-virtual thunk to std::__1::basic_istream<char, std::__1::char_traits<char> >::~basic_istream()", referenced from:
      construction vtable for std::__1::basic_istream<char, std::__1::char_traits<char> >-in-std::__1::basic_istringstream<char, std::__1::char_traits<char>, std::__1::allocator<char> > in libVuforia.a(libVuforia.a-armv7-master.o)
  "std::__1::basic_istream<char, std::__1::char_traits<char> >::seekg(std::__1::fpos<__mbstate_t>)", referenced from:
      l12812 in libVuforia.a(libVuforia.a-armv7-master.o)
  "std::__1::basic_istream<char, std::__1::char_traits<char> >::operator>>(float&)", referenced from:
      l12812 in libVuforia.a(libVuforia.a-armv7-master.o)
  "std::__1::ios_base::getloc() const", referenced from:
      l12812 in libVuforia.a(libVuforia.a-armv7-master.o)
      l12922 in libVuforia.a(libVuforia.a-armv7-master.o)
      l18582 in libVuforia.a(libVuforia.a-armv7-master.o)
      l18591 in libVuforia.a(libVuforia.a-armv7-master.o)
      l18649 in libVuforia.a(libVuforia.a-armv7-master.o)
      l18730 in libVuforia.a(libVuforia.a-armv7-master.o)
  "std::__1::__vector_base_common<true>::__throw_length_error() const", referenced from:
      l12805 in libVuforia.a(libVuforia.a-armv7-master.o)
      l17392 in libVuforia.a(libVuforia.a-armv7-master.o)
      l18583 in libVuforia.a(libVuforia.a-armv7-master.o)
      l18584 in libVuforia.a(libVuforia.a-armv7-master.o)
      l18585 in libVuforia.a(libVuforia.a-armv7-master.o)
      l18592 in libVuforia.a(libVuforia.a-armv7-master.o)
      l18593 in libVuforia.a(libVuforia.a-armv7-master.o)
      ...
  "std::__1::locale::use_facet(std::__1::locale::id&) const", referenced from:
      l12812 in libVuforia.a(libVuforia.a-armv7-master.o)
      l12922 in libVuforia.a(libVuforia.a-armv7-master.o)
      l18582 in libVuforia.a(libVuforia.a-armv7-master.o)
      l18591 in libVuforia.a(libVuforia.a-armv7-master.o)
      l18649 in libVuforia.a(libVuforia.a-armv7-master.o)
      l18730 in libVuforia.a(libVuforia.a-armv7-master.o)
  "non-virtual thunk to std::__1::basic_istream<char, std::__1::char_traits<char> >::~basic_istream()", referenced from:
      construction vtable for std::__1::basic_istream<char, std::__1::char_traits<char> >-in-std::__1::basic_istringstream<char, std::__1::char_traits<char>, std::__1::allocator<char> > in libVuforia.a(libVuforia.a-armv7-master.o)
  "std::__1::basic_ostream<char, std::__1::char_traits<char> >::sentry::~sentry()", referenced from:
      l18730 in libVuforia.a(libVuforia.a-armv7-master.o)
  "std::__1::basic_streambuf<char, std::__1::char_traits<char> >::~basic_streambuf()", referenced from:
      l12812 in libVuforia.a(libVuforia.a-armv7-master.o)
      l12858 in libVuforia.a(libVuforia.a-armv7-master.o)
      l18612 in libVuforia.a(libVuforia.a-armv7-master.o)
      l18626 in libVuforia.a(libVuforia.a-armv7-master.o)
      l18627 in libVuforia.a(libVuforia.a-armv7-master.o)
      l18628 in libVuforia.a(libVuforia.a-armv7-master.o)
      l18630 in libVuforia.a(libVuforia.a-armv7-master.o)
      ...
  "std::__1::basic_istream<char, std::__1::char_traits<char> >::~basic_istream()", referenced from:
      l12812 in libVuforia.a(libVuforia.a-armv7-master.o)
      l12858 in libVuforia.a(libVuforia.a-armv7-master.o)
      l18612 in libVuforia.a(libVuforia.a-armv7-master.o)
      l18626 in libVuforia.a(libVuforia.a-armv7-master.o)
      l18627 in libVuforia.a(libVuforia.a-armv7-master.o)
      l18628 in libVuforia.a(libVuforia.a-armv7-master.o)
  "std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::basic_string(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, unsigned long, unsigned long, std::__1::allocator<char> const&)", referenced from:
      l12808 in libVuforia.a(libVuforia.a-armv7-master.o)
  "std::__1::basic_streambuf<char, std::__1::char_traits<char> >::basic_streambuf()", referenced from:
      l12812 in libVuforia.a(libVuforia.a-armv7-master.o)
      l12858 in libVuforia.a(libVuforia.a-armv7-master.o)
  "std::__1::locale::~locale()", referenced from:
      l12812 in libVuforia.a(libVuforia.a-armv7-master.o)
      l12922 in libVuforia.a(libVuforia.a-armv7-master.o)
      l18582 in libVuforia.a(libVuforia.a-armv7-master.o)
      l18591 in libVuforia.a(libVuforia.a-armv7-master.o)
      l18649 in libVuforia.a(libVuforia.a-armv7-master.o)
      l18730 in libVuforia.a(libVuforia.a-armv7-master.o)
  "std::__1::cout", referenced from:
      l12922 in libVuforia.a(libVuforia.a-armv7-master.o)
  "std::__1::basic_istream<char, std::__1::char_traits<char> >::operator>>(unsigned int&)", referenced from:
      l12809 in libVuforia.a(libVuforia.a-armv7-master.o)
  "std::__1::basic_ios<char, std::__1::char_traits<char> >::~basic_ios()", referenced from:
      l12812 in libVuforia.a(libVuforia.a-armv7-master.o)
      l12858 in libVuforia.a(libVuforia.a-armv7-master.o)
      l18612 in libVuforia.a(libVuforia.a-armv7-master.o)
      l18626 in libVuforia.a(libVuforia.a-armv7-master.o)
      l18627 in libVuforia.a(libVuforia.a-armv7-master.o)
      l18628 in libVuforia.a(libVuforia.a-armv7-master.o)
  "std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::~basic_string()", referenced from:
      l12808 in libVuforia.a(libVuforia.a-armv7-master.o)
      l12809 in libVuforia.a(libVuforia.a-armv7-master.o)
      l12810 in libVuforia.a(libVuforia.a-armv7-master.o)
      l12811 in libVuforia.a(libVuforia.a-armv7-master.o)
      l12812 in libVuforia.a(libVuforia.a-armv7-master.o)
      l12846 in libVuforia.a(libVuforia.a-armv7-master.o)
      l12848 in libVuforia.a(libVuforia.a-armv7-master.o)
      ...
  "std::__1::ctype<char>::id", referenced from:
      l12812 in libVuforia.a(libVuforia.a-armv7-master.o)
      l12922 in libVuforia.a(libVuforia.a-armv7-master.o)
      l18582 in libVuforia.a(libVuforia.a-armv7-master.o)
      l18591 in libVuforia.a(libVuforia.a-armv7-master.o)
      l18649 in libVuforia.a(libVuforia.a-armv7-master.o)
      l18730 in libVuforia.a(libVuforia.a-armv7-master.o)
  "std::__1::mutex::lock()", referenced from:
      StateHolder::QCAR_onUpdate(QCAR::State&) in libQCARUnityPlayer.a(StateHolder.o)
      StateHolder::setStateBufferSize(unsigned int) in libQCARUnityPlayer.a(StateHolder.o)
      StateHolder::updateCurrentState() in libQCARUnityPlayer.a(StateHolder.o)
      StateHolder::getCurrentState() in libQCARUnityPlayer.a(StateHolder.o)
      StateHolder::hasStateBeenSet() in libQCARUnityPlayer.a(StateHolder.o)
  "std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::basic_string(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)", referenced from:
      l12809 in libVuforia.a(libVuforia.a-armv7-master.o)
      l12812 in libVuforia.a(libVuforia.a-armv7-master.o)
      l18594 in libVuforia.a(libVuforia.a-armv7-master.o)
  "std::__1::basic_ostream<char, std::__1::char_traits<char> >::flush()", referenced from:
      l12812 in libVuforia.a(libVuforia.a-armv7-master.o)
      l12922 in libVuforia.a(libVuforia.a-armv7-master.o)
      l18649 in libVuforia.a(libVuforia.a-armv7-master.o)
  "std::__1::basic_istream<char, std::__1::char_traits<char> >::get()", referenced from:
      l12806 in libVuforia.a(libVuforia.a-armv7-master.o)
      l12809 in libVuforia.a(libVuforia.a-armv7-master.o)
      l12811 in libVuforia.a(libVuforia.a-armv7-master.o)
      l12812 in libVuforia.a(libVuforia.a-armv7-master.o)
  "std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::operator=(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)", referenced from:
      l18629 in libVuforia.a(libVuforia.a-armv7-master.o)
  "std::__1::basic_ostream<char, std::__1::char_traits<char> >::operator<<(unsigned long)", referenced from:
      l12922 in libVuforia.a(libVuforia.a-armv7-master.o)
  "std::__1::basic_streambuf<char, std::__1::char_traits<char> >::setbuf(char*, int)", referenced from:
      vtable for std::__1::basic_stringbuf<char, std::__1::char_traits<char>, std::__1::allocator<char> > in libVuforia.a(libVuforia.a-armv7-master.o)
  "std::__1::mutex::unlock()", referenced from:
      StateHolder::QCAR_onUpdate(QCAR::State&) in libQCARUnityPlayer.a(StateHolder.o)
      StateHolder::setStateBufferSize(unsigned int) in libQCARUnityPlayer.a(StateHolder.o)
      StateHolder::updateCurrentState() in libQCARUnityPlayer.a(StateHolder.o)
      StateHolder::getCurrentState() in libQCARUnityPlayer.a(StateHolder.o)
      StateHolder::hasStateBeenSet() in libQCARUnityPlayer.a(StateHolder.o)
  "std::__1::basic_streambuf<char, std::__1::char_traits<char> >::xsputn(char const*, int)", referenced from:
      vtable for std::__1::basic_stringbuf<char, std::__1::char_traits<char>, std::__1::allocator<char> > in libVuforia.a(libVuforia.a-armv7-master.o)
  "std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::__init(char const*, unsigned long)", referenced from:
      l12809 in libVuforia.a(libVuforia.a-armv7-master.o)
      l12812 in libVuforia.a(libVuforia.a-armv7-master.o)
      l12858 in libVuforia.a(libVuforia.a-armv7-master.o)
ld: symbol(s) not found for architecture armv7
clang: error: linker command failed with exit code 1 (use -v to see invocation)

我在网上看到了很多这个问题,但它似乎主要通过添加正确的框架来解决,但我应该拥有它们,至少我在网上看到的所有东西。我也尝试过 AdSupport.framework,但它没有效果,所以我删除了它,因为它显然会使 iOS 审查失败(而且我不需要那种跟踪)。我也构建了同一个项目 4 次(干净,每次都在一个新文件夹中),添加框架,删除它们并再次添加它们。我还从项目中删除了 Vuforia 和 Google Analytics 并重新添加了它们,然后构建了一个新版本但没有更改。如果有人能帮我解决这个问题,我将不胜感激!

Here is picture of the frameworks and libraries.

Unity 版本是 4.6.7f1,Xcode 是 6.4。我下载了 Analytics 和 Vuforia 的最新版本。

【问题讨论】:

    标签: ios xcode unity3d google-analytics


    【解决方案1】:

    嗯,我自己到了那里。在查看了足够长的 git 提交并尝试了足够多的东西之后,我发现当我将它添加到项目中时,Google Analytics 已经取代了 PostProcessBuildPlayer(在 Assets/Editor/ 中),这意味着 Vuforia 没有正确构建自己。我重新添加了 Vuforia 版本并将 Analytics 版本重命名为 PostProcessBuildPlayer_GA,并在构建时添加了正确的框架。之后,它构建得很漂亮。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-22
      • 2022-11-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多