将unity 5项目从windows移动到mac以实现iOS会导致未找到架构arm64"的符号。错误

时间:2015-09-26 22:14:50

标签: ios iphone xcode ipad unity3d

我有一个我在我的电脑上在Unity 5中创建的游戏。它为视频广告实施了Vungle Unity插件。它在Android上运行得非常好,但是一旦我复制了项目,将其移动到我的Mac,将平台切换到iOS,并尝试构建它,我得到错误:符号未找到架构arm64

我已经研究了好几天,并且没有找到解决方案的运气。 Unity中的体系结构设置为通用,并设置为构建设备sdk。我正在尝试在iPhone 5上进行测试。它在模拟器上运行正常,而不是在尝试在真实设备上启动它时。

以下是我得到的完整错误:

Undefined symbols for architecture arm64:
"__vungleClearCache", referenced from:
  _VungleBinding_clearCache_m756 in Bulk_Assembly-CSharp-firstpass_0.o
  _VungleBinding__vungleClearCache_m755 in Bulk_Assembly-CSharp-firstpass_0.o
 (maybe you meant: _VungleBinding__vungleClearCache_m755)
"__vungleClearSleep", referenced from:
  _VungleBinding_clearSleep_m758 in Bulk_Assembly-CSharp-firstpass_0.o
  _VungleBinding__vungleClearSleep_m757 in Bulk_Assembly-CSharp-firstpass_0.o
 (maybe you meant: _VungleBinding__vungleClearSleep_m757)
"__vungleEnableLogging", referenced from:
  _VungleBinding_enableLogging_m746 in Bulk_Assembly-CSharp-firstpass_0.o
  _VungleBinding__vungleEnableLogging_m745 in Bulk_Assembly-CSharp-firstpass_0.o
 (maybe you meant: _VungleBinding__vungleEnableLogging_m745)
"__vungleGetEndPoint", referenced from:
  _VungleBinding__vungleGetEndPoint_m761 in Bulk_Assembly-CSharp-firstpass_0.o
 (maybe you meant: _VungleBinding__vungleGetEndPoint_m761)
"__vungleIsAdAvailable", referenced from:
  _VungleBinding_isAdAvailable_m748 in Bulk_Assembly-CSharp-firstpass_0.o
  _VungleBinding__vungleIsAdAvailable_m747 in Bulk_Assembly-CSharp-firstpass_0.o
 (maybe you meant: _VungleBinding__vungleIsAdAvailable_m747)
"__vunglePlayAdEx", referenced from:
  _VungleBinding__vunglePlayAdEx_m750 in Bulk_Assembly-CSharp-firstpass_0.o
 (maybe you meant: _VungleBinding__vunglePlayAdEx_m750)
"__vunglePlayAdWithOptions", referenced from:
  _VungleBinding__vunglePlayAdWithOptions_m749 in Bulk_Assembly-CSharp-firstpass_0.o
 (maybe you meant: _VungleBinding__vunglePlayAdWithOptions_m749, _VungleBinding__vunglePlayAdWithOptionsEx_m751 )
"__vunglePlayAdWithOptionsEx", referenced from:
  _VungleBinding__vunglePlayAdWithOptionsEx_m751 in Bulk_Assembly-CSharp-firstpass_0.o
 (maybe you meant: _VungleBinding__vunglePlayAdWithOptionsEx_m751)
"__vungleSetEndPoint", referenced from:
  _VungleBinding__vungleSetEndPoint_m759 in Bulk_Assembly-CSharp-firstpass_0.o
 (maybe you meant: _VungleBinding__vungleSetEndPoint_m759)
"__vungleSetSoundEnabled", referenced from:
  _VungleBinding_setSoundEnabled_m744 in Bulk_Assembly-CSharp-firstpass_0.o
  _VungleBinding__vungleSetSoundEnabled_m743 in Bulk_Assembly-CSharp-firstpass_0.o
 (maybe you meant: _VungleBinding__vungleSetSoundEnabled_m743)
"__vungleStartWithAppId", referenced from:
  _VungleBinding__vungleStartWithAppId_m741 in Bulk_Assembly-CSharp-firstpass_0.o
 (maybe you meant: _VungleBinding__vungleStartWithAppId_m741)
ld: symbol(s) not found for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

我一直在研究这个问题已经太久了,而且效果不好。以下是我尝试过的一些事情:

1)将架构更改为标准架构(armv7 arm64)

2)改变"仅构建活动架构"没有

3)更改"死代码剥离"没有

4)将$(继承)添加到"其他链接标志"

5)确保将VungleSDK.framework添加到二进制链接

15年9月26日

从我在线阅读的所有内容来看,这些错误意味着我应该错过一个框架,很可能是一个框架,其中包含VungleBinding文件。 VungleBinding.m文件不是框架的一部分,如果我自己链接VungleBinding.m文件,我仍然会收到这些错误。但是,此VungleBinding.m文件确实包含所提供的错误消息中引用的方法。

15年9月27日

嗯,这真是太棒了......我现在意识到,唯一正在使用的模拟器适用于iPhone 5及更早版本。比这更新的东西给了我这个错误:

dyld: Symbol not found: _CloseZStream

1 个答案:

答案 0 :(得分:3)

在我的情况下,我可以通过执行以下操作来解决此问题:

在Unity中构建iOS项目之前,在将平台切换到iOS之后,请确保单击“#Symlink Unity Libraries”。

使用此选项构建应用程序后,我可以使用所有模拟器并构建到设备。