以前,我可以毫无问题地构建和运行Unity输出Xcode项目。但现在,苹果需要iOS应用的64位支持,我不得不做以下更改在Unity:通用体系结构项目上具有-ObjC链接器标志会导致Mach-O链接器错误?
Build settings -> Player settings -> Other settings -> Scripting backend -> IL2CPP
Build settings -> Player settings -> Other settings -> Architecture -> Universal
现在的问题是,我不能成功地构建和我的设备上运行我的Xcode项目。我得到这个Apple Mach-O linker error
,我没有得到。
下面是我从Xcode中得到了错误:
ld: warning: directory not found for option '-F-F/Users/user/Desktop/qwer/Frameworks/Plugins/IOS'
ld: warning: directory not found for option '-F"/Users/user/Desktop/qwer/../../Documents/Unity Projects/Unity 5.0.0 projects/MyGame/Assets/Editor/Vungle/VungleSDK"'
duplicate symbol l082 in:
/Users/user/Documents/Unity Projects/Unity 5.0.0 projects/MyGame/Assets/Editor/Vungle/VungleSDK/VungleSDK.framework/VungleSDK(FMDatabase.o)
/Users/user/Documents/Unity Projects/Unity 5.0.0 projects/MyGame/Assets/Editor/Vungle/VungleSDK/VungleSDK.framework/VungleSDK(VungleAdViewController.o)
duplicate symbol l084 in:
/Users/user/Documents/Unity Projects/Unity 5.0.0 projects/MyGame/Assets/Editor/Vungle/VungleSDK/VungleSDK.framework/VungleSDK(VungleVideoPlayer.o)
/Users/user/Documents/Unity Projects/Unity 5.0.0 projects/MyGame/Assets/Editor/Vungle/VungleSDK/VungleSDK.framework/VungleSDK(VungleAdViewController.o)
ld: 2 duplicate symbols for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
从我所观察到的,似乎有什么东西与VungleSDK
位置?这对我来说很奇怪,因为除了上面提到的那个之外,我没有做任何改变。
有谁知道如何解决这个问题?
另请注意:切换到IL2CPP
和Universal
体系结构时是否有人遇到编译时间慢?我已经将我的Xcode版本切换到Release
(正如有人在线提示的),它仍然是这样。我的代码编译需要很长时间。在我切换到IL2CPP和通用版之前,只花了不到10秒的时间。更新:我需要提及的是,我在我的应用中使用了Chartboost
,AdColony
和Vungle
。我做了一些试验,发现从我的Xcode项目中删除-ObjC
和-fobjc-arc
链接器标志修复了Mach-O链接器错误,并且能够再次成功并运行。我得到的warning: directory not found for option
虽然仍然存在,但它仍然编译和运行成功,并且Chartboost
和Vungle
的所有功能在我的应用程序中完全正常工作。
因为AdColony
SDK需要它们,所以我首先获得了这些链接器标志。但删除它们使AdColony停止在我的应用程序中运行。所以它也不是一个干净的解决方案。
这使我相信,无论是2两件事:AdColony
Unity插件可以与支持通用/ ARM64架构或-ObjC
链接器标记问题不是建设,以通用/ ARM64架构兼容。
如果有人能够澄清这个令人困惑的问题,我将不胜感激。
感谢
它似乎像一些符号重复在梧桐sdk里面。确保你使用的是支持64位的sdk,这看起来像你一样,并尝试清理该项目,然后做一个新的版本 –
@ hades2510感谢您的评论。我做了一个干净的项目,并再次编译,但我收到了同样的错误。虽然我不完全确定最新的VungleSDK是否支持64位。但没有'忽略'对错误的评论,我认为它支持64. – aresz
如何修复重复的符号? – aresz