【问题标题】:Xcode 8.0 Undefined symbols for Architecture arm64Xcode 8.0 架构 arm64 的未定义符号
【发布时间】:2020-03-25 14:24:32
【问题描述】:

我在我的安卓电脑上使用 Unity 5 创建了一个游戏,它运行良好。然后我将我的项目移动到 mac,将平台切换到 iOS,并尝试为 iOS 10 和 iphone 5s 设备构建它,现在我收到错误“Undefined symbols for architecture arm64”几天。这是一个 Apple Mach-O Linker 错误,完整的错误日志如下:

    Undefined symbols for architecture arm64:
  "_SetPostProcessingLevel", referenced from:
      _MobileMovieTexture_SetPostProcessingLevel_m340134882 in Bulk_Assembly-CSharp_2.o
     (maybe you meant: _MobileMovieTexture_SetPostProcessingLevel_m340134882)
  "_GetNativeTextureContext", referenced from:
      _MobileMovieTexture_GetNativeTextureContext_m3013707638 in Bulk_Assembly-CSharp_2.o
      _MobileMovieTexture_Update_m229835833 in Bulk_Assembly-CSharp_2.o
     (maybe you meant: _MobileMovieTexture_GetNativeTextureContext_m3013707638)
  "_GetNativeCrHandle", referenced from:
      _MobileMovieTexture_GetNativeCrHandle_m1346850547 in Bulk_Assembly-CSharp_2.o
      _MobileMovieTexture_AllocateTexures_m1194377895 in Bulk_Assembly-CSharp_2.o
     (maybe you meant: _MobileMovieTexture_GetNativeCrHandle_m1346850547)
  "_GetNativeYHandle", referenced from:
      _MobileMovieTexture_GetNativeYHandle_m122341787 in Bulk_Assembly-CSharp_2.o
      _MobileMovieTexture_AllocateTexures_m1194377895 in Bulk_Assembly-CSharp_2.o
     (maybe you meant: _MobileMovieTexture_GetNativeYHandle_m122341787)
  "_SetTargetDisplayDecodeTime", referenced from:
      _MobileMovieTexture_SetTargetDisplayDecodeTime_m2803437558 in Bulk_Assembly-CSharp_2.o
      _MobileMovieTexture_Update_m229835833 in Bulk_Assembly-CSharp_2.o
     (maybe you meant: _MobileMovieTexture_SetTargetDisplayDecodeTime_m2803437558)
  "_GetUploadedFrameTime", referenced from:
      _MobileMovieTexture_GetUploadedFrameTime_m767216509 in Bulk_Assembly-CSharp_2.o
     (maybe you meant: _MobileMovieTexture_GetUploadedFrameTime_m767216509)
  "_GetTargetDecodeFrameTime", referenced from:
      _MobileMovieTexture_GetTargetDecodeFrameTime_m1944055036 in Bulk_Assembly-CSharp_2.o
     (maybe you meant: _MobileMovieTexture_GetTargetDecodeFrameTime_m1944055036)
  "_GetDecodedFrameTime", referenced from:
      _MobileMovieTexture_GetDecodedFrameTime_m4082499723 in Bulk_Assembly-CSharp_2.o
      _MobileMovieTexture_Update_m229835833 in Bulk_Assembly-CSharp_2.o
     (maybe you meant: _MobileMovieTexture_GetDecodedFrameTime_m4082499723)
  "_GetNativeCbHandle", referenced from:
      _MobileMovieTexture_GetNativeCbHandle_m3890980099 in Bulk_Assembly-CSharp_2.o
      _MobileMovieTexture_AllocateTexures_m1194377895 in Bulk_Assembly-CSharp_2.o
     (maybe you meant: _MobileMovieTexture_GetNativeCbHandle_m3890980099)
  "_HasFinished", referenced from:
      _MobileMovieTexture_HasFinished_m2425687786 in Bulk_Assembly-CSharp_2.o
      _MobileMovieTexture_Update_m229835833 in Bulk_Assembly-CSharp_2.o
     (maybe you meant: _MobileMovieTexture_HasFinished_m2425687786)
  "_UnitySetGraphicsDevice", referenced from:
      _MobileMovieManager_UnitySetGraphicsDevice_m1104447396 in Bulk_Assembly-CSharp_2.o
      _MobileMovieManager_Awake_m3392935013 in Bulk_Assembly-CSharp_2.o
     (maybe you meant: _MobileMovieManager_UnitySetGraphicsDevice_m1104447396)
  "_CreateContext", referenced from:
      _MobileMovieTexture_CreateContext_m2297476272 in Bulk_Assembly-CSharp_2.o
      _MobileMovieTexture_Start_m699961940 in Bulk_Assembly-CSharp_2.o
     (maybe you meant: _MobileMovieTexture_CreateContext_m2297476272)
  "_GetUVHeight", referenced from:
      _MobileMovieTexture_GetUVHeight_m1829143090 in Bulk_Assembly-CSharp_2.o
      _MobileMovieTexture_Open_m874313018 in Bulk_Assembly-CSharp_2.o
     (maybe you meant: _MobileMovieTexture_GetUVHeight_m1829143090)
  "_GetUVStride", referenced from:
      _MobileMovieTexture_GetUVStride_m3556923968 in Bulk_Assembly-CSharp_2.o
      _MobileMovieTexture_Open_m874313018 in Bulk_Assembly-CSharp_2.o
     (maybe you meant: _MobileMovieTexture_GetUVStride_m3556923968)
  "_GetYHeight", referenced from:
      _MobileMovieTexture_GetYHeight_m50893772 in Bulk_Assembly-CSharp_2.o
      _MobileMovieTexture_Open_m874313018 in Bulk_Assembly-CSharp_2.o
     (maybe you meant: _MobileMovieTexture_GetYHeight_m50893772)
  "_Seek", referenced from:
      _MobileMovieTexture_set_playPosition_m2716267000 in Bulk_Assembly-CSharp_2.o
      _MobileMovieTexture_Seek_m2949269240 in Bulk_Assembly-CSharp_2.o
      _MobileMovieTexture_Update_m229835833 in Bulk_Assembly-CSharp_2.o
     (maybe you meant: __Z17FMOD_OS_File_SeekPvj, _UNITY_FT_Stream_Seek , __ZN4FMOD27FMOD_OggVorbis_SeekCallbackEPvxi , __Z14FMOD_FILE_SeekPvjS_ , _SeekOrigin_t4120335598_1_0_0 , _SeekOrigin_t4120335598_0_0_0 , _FMOD_Sound_SeekData , _MemoryStream_Seek_m3823297180_MetadataUsageId , _UnmanagedMemoryStream_Seek_m2466946404_MetadataUsageId , _FileStream_Seek_m4271693569 , _WebConnectionStream_Seek_m4285092954 , _SslStream_Seek_m1475566206_MetadataUsageId , _FileStream_Seek_m4271693569_MetadataUsageId , _SslStreamBase_Seek_m3066335689 , _SslStream_Seek_m1475566206 , _NetworkStream_Seek_m2612975724_MetadataUsageId , _DeflateStream_Seek_m4251260626_MetadataUsageId , _GZipStream_Seek_m2685013297 , _XmlInputStream_Seek_m162895276 , _NetworkStream_Seek_m2612975724 , _SeekOrigin_t4120335598_0_0_32854 , _UnmanagedMemoryStream_Seek_m2466946404 , _MobileMovieTexture_Seek_m2949269240 , _FtpDataStream_Seek_m1228510272_MetadataUsageId , _WebConnectionStream_Seek_m4285092954_MetadataUsageId , _SslStreamBase_Seek_m3066335689_MetadataUsageId , _TlsStream_Seek_m484817355 , _FtpDataStream_Seek_m1228510272 , _MobileMovieTexture_get_SeekKeyFrame_m756860947 , _NullStream_Seek_m57934742 , _MonoIO_Seek_m1717806132 , _DeflateStream_Seek_m4251260626 , _MobileMovieTexture_set_SeekKeyFrame_m3052084234 , _MemoryStream_Seek_m3823297180 )
  "_GetYStride", referenced from:
      _MobileMovieTexture_GetYStride_m1778674650 in Bulk_Assembly-CSharp_2.o
      _MobileMovieTexture_Open_m874313018 in Bulk_Assembly-CSharp_2.o
     (maybe you meant: _MobileMovieTexture_GetYStride_m1778674650)
  "_GetPicY", referenced from:
      _MobileMovieTexture_GetPicY_m328897995 in Bulk_Assembly-CSharp_2.o
      _MobileMovieTexture_Open_m874313018 in Bulk_Assembly-CSharp_2.o
     (maybe you meant: _MobileMovieTexture_GetPicY_m328897995)
  "_CloseStream", referenced from:
      _MobileMovieTexture_CloseStream_m889507146 in Bulk_Assembly-CSharp_2.o
      _MobileMovieTexture_Stop_m992823538 in Bulk_Assembly-CSharp_2.o
     (maybe you meant: _MobileMovieTexture_CloseStream_m889507146)
  "_GetPicX", referenced from:
      _MobileMovieTexture_GetPicX_m839432172 in Bulk_Assembly-CSharp_2.o
      _MobileMovieTexture_Open_m874313018 in Bulk_Assembly-CSharp_2.o
     (maybe you meant: _MobileMovieTexture_GetPicX_m839432172)
  "_GetPicHeight", referenced from:
      _MobileMovieTexture_GetPicHeight_m3590182171 in Bulk_Assembly-CSharp_2.o
      _MobileMovieTexture_Open_m874313018 in Bulk_Assembly-CSharp_2.o
     (maybe you meant: _MobileMovieTexture_GetPicHeight_m3590182171)
  "_UnityRenderEvent", referenced from:
      _MobileMovieManager_UnityRenderEvent_m2832240770 in Bulk_Assembly-CSharp_2.o
      _U3CDecodeCoroutineU3Ec__Iterator2D_MoveNext_m1856974098 in Bulk_Assembly-CSharp_2.o
     (maybe you meant: _MobileMovieManager_UnityRenderEvent_m2832240770)
  "_OpenStream", referenced from:
      _MobileMovieTexture_OpenStream_m1251301461 in Bulk_Assembly-CSharp_2.o
      _MobileMovieTexture_Open_m874313018 in Bulk_Assembly-CSharp_2.o
     (maybe you meant: _InternalConfigurationHost_OpenStreamForRead_m3069798203, _MobileMovieTexture_OpenStream_m1251301461 , _InternalConfigurationHost_OpenStreamForRead_m3069798203_MetadataUsageId )
  "_GetDuration", referenced from:
      _MobileMovieTexture_get_duration_m2740121488 in Bulk_Assembly-CSharp_2.o
      _MobileMovieTexture_GetDuration_m3119351611 in Bulk_Assembly-CSharp_2.o
     (maybe you meant: _Playable_GetDurationInternal_m31704136, _ColorTween_GetDuration_m1400665524 , __Z49Playable_CUSTOM_INTERNAL_CALL_GetDurationInternalR9HPlayable , _MobileMovieTexture_GetDuration_m3119351611 , _FloatTween_GetDuration_m2290037293_AdjustorThunk , _Playables_GetDurationValidated_m2822701863 , _Playable_INTERNAL_CALL_GetDurationInternal_m2671113415 , __Z85Register_UnityEngine_Experimental_Director_Playable_INTERNAL_CALL_GetDurationInternalv , _FloatTween_GetDuration_m2290037293 , _ColorTween_GetDuration_m1400665524_AdjustorThunk )
  "_GetAspectRatio", referenced from:
      _MobileMovieTexture_get_AspectRatio_m1332767376 in Bulk_Assembly-CSharp_2.o
      _MobileMovieTexture_GetAspectRatio_m1467253595 in Bulk_Assembly-CSharp_2.o
     (maybe you meant: _MobileMovieTexture_GetAspectRatio_m1467253595)
  "_GetPicWidth", referenced from:
      _MobileMovieTexture_GetPicWidth_m2259543134 in Bulk_Assembly-CSharp_2.o
      _MobileMovieTexture_Open_m874313018 in Bulk_Assembly-CSharp_2.o
     (maybe you meant: _MobileMovieTexture_GetPicWidth_m2259543134)
  "_GetVideoFPS", referenced from:
      _MobileMovieTexture_get_FPS_m1346749615 in Bulk_Assembly-CSharp_2.o
      _MobileMovieTexture_GetVideoFPS_m504717089 in Bulk_Assembly-CSharp_2.o
     (maybe you meant: _MobileMovieTexture_GetVideoFPS_m504717089)
  "_DestroyContext", referenced from:
      _MobileMovieTexture_DestroyContext_m2848445103 in Bulk_Assembly-CSharp_2.o
      _MobileMovieTexture_OnDestroy_m3443983437 in Bulk_Assembly-CSharp_2.o
     (maybe you meant: _MobileMovieTexture_DestroyContext_m2848445103)
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. 将“Dead code stripping”更改为no
  4. $(inherited) 添加到“其他链接器标志
  5. 添加要构建的“Security”和“SystemConfiguration”框架 阶段
  6. 在 Unity 播放器设置中启用“符号链接 Unity 库
  7. 禁用“bitcode”并启用“Preserve Private External Symbols

这是我的构建设置屏幕截图: BuildSettings1, BuildSettings2,

【问题讨论】:

  • 统一使用哪个版本?
  • 我的 unity 版本是 5.4.1,但主要项目在 5.3.4 中,然后我将项目移至 Mac 和更新版本的 Unity。
  • 更新您的第 3 方框架
  • 将库的路径添加到“库搜索路径”。
  • 感谢您的评论,但我不知道是哪个框架或文件导致了此错误。所以我不知道应该更新哪个框架。

标签: ios xcode unity3d build


【解决方案1】:

这种类型的错误通常意味着项目中的托管代码在 C# 中有一个名为 SetPostProcessingLevel 的外部静态方法。该方法应该是本机方法,它是项目中本机静态库的一部分。

IL2CPP 要求所有外部静态方法都在链接时间解析。如果本机链接器没有找到它们,就会发生这样的错误。

这些方法可能不应该存在于 iOS 构建中。如果是这样,在 C# 代码中定义它们的外部静态方法应该用#if !UNITY_IOS 语句包围以避免编译它们。

【讨论】:

  • 谢谢。你是对的。实际上,mobile_movie_texture (MMT) 是我们在 android 应用程序中使用的外部包。所以我删除了那个包,它现在可以工作了。
猜你喜欢
  • 2019-05-20
  • 2021-01-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多