将 Unity 5 项目从 windows 移动到 mac 以实施 iOS 导致 "symbol(s) not found for architecture arm64" 错误
Moving unity 5 project from windows to mac to implement iOS results in "symbol(s) not found for architecture arm64" error
我的电脑上有一个用 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) 将 "Build active architecture only" 更改为否
3) 将 "Dead code stripping" 更改为否
4) 将 $(inherited) 添加到 "Other Linker Flags"
5) 确保将 VungleSDK.framework 添加到二进制 links
9/26/15
根据我在网上阅读的所有内容,这些错误意味着我应该缺少一个框架,很可能是一个包含 VungleBinding 文件的框架。 VungleBinding.m 文件不是框架的一部分,如果我单独 link VungleBinding.m 文件,我仍然会收到这些错误。但是,此 VungleBinding.m 文件确实包含所提供的错误消息中引用的方法。
9/27/15
好吧,这太棒了……我现在意识到,唯一能正常工作的模拟器是为 iPhone 5 及更早版本提供的。比这更新的任何东西都会给我这个错误:
dyld: Symbol not found: _CloseZStream
就我而言,我能够通过执行以下操作解决此问题:
在 Unity 中为 iOS 构建项目之前,将平台切换到 iOS 之后,确保单击 "Symlink Unity Libraries."
在选中此选项构建应用程序后,我能够使用所有模拟器并构建到设备上。
我的电脑上有一个用 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) 将 "Build active architecture only" 更改为否
3) 将 "Dead code stripping" 更改为否
4) 将 $(inherited) 添加到 "Other Linker Flags"
5) 确保将 VungleSDK.framework 添加到二进制 links
9/26/15
根据我在网上阅读的所有内容,这些错误意味着我应该缺少一个框架,很可能是一个包含 VungleBinding 文件的框架。 VungleBinding.m 文件不是框架的一部分,如果我单独 link VungleBinding.m 文件,我仍然会收到这些错误。但是,此 VungleBinding.m 文件确实包含所提供的错误消息中引用的方法。
9/27/15
好吧,这太棒了……我现在意识到,唯一能正常工作的模拟器是为 iPhone 5 及更早版本提供的。比这更新的任何东西都会给我这个错误:
dyld: Symbol not found: _CloseZStream
就我而言,我能够通过执行以下操作解决此问题:
在 Unity 中为 iOS 构建项目之前,将平台切换到 iOS 之后,确保单击 "Symlink Unity Libraries."
在选中此选项构建应用程序后,我能够使用所有模拟器并构建到设备上。