You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Unity导出iOS项目至Xcode遇arm64架构VideoPlayer符号未定义错误求助

解决Unity转iOS后Xcode中Undefined symbols arm64的问题

你遇到的核心问题是Xcode无法找到视频播放插件的原生arm64架构实现,那些_VideoPlayerPluginXXX符号都是插件的原生C/OC函数,编译链接时找不到对应的二进制代码。结合你已经尝试的禁用bitcode、重建单场景等操作,给你几个针对性的排查修复步骤:

1. 验证插件库是否支持arm64架构

打开终端,导航到插件的.framework.a文件所在目录,执行以下命令:

lipo -info YourVideoPlayerPluginLibraryName

如果输出里没有arm64,说明这个插件根本没编译arm64版本——这是最常见的原因。你需要联系插件开发者获取支持arm64的版本,或者如果有插件源码,自己重新编译包含arm64架构的库文件。

2. 确认Unity打包时正确包含了iOS插件

  • 在Unity项目中,确保插件的iOS库文件(.framework/.a)放在Assets/Plugins/iOS目录下。选中文件后,在Inspector面板的Platform Settings中:
    • 勾选iOS平台
    • 设置CPU架构为ARM64(或Universal,包含arm64)
  • 打包后打开Xcode项目,检查Frameworks, Libraries, and Embedded Content列表里是否有这个插件库。如果没有,手动添加进去,并将其Embed选项设置为Embed & Sign

3. 检查Xcode链接器设置

  • 打开Xcode的Build Settings,找到Other Linker Flags,确认是否添加了-ObjC-all_load参数(很多OC编写的插件需要这些参数才能正确加载类别和符号,否则会出现符号缺失)。
  • 检查Library Search Paths,确保插件库所在的路径已经被包含。如果插件是Unity自动导入的,路径应该默认正确,但如果手动移动过文件,需要重新添加对应路径。

4. 核对C#与原生函数的声明一致性

查看Unity中调用插件的C#代码,确认[DllImport("__Internal")]声明的函数名和原生代码中的函数名完全一致(C语言区分大小写)。比如:

[DllImport("__Internal")]
private static extern void VideoPlayerPluginRewindVideo();

这里的VideoPlayerPluginRewindVideo必须和原生C/OC代码中的函数名拼写、大小写完全匹配,否则会出现符号找不到的问题。

5. 清理Xcode缓存后重新构建

有时候缓存会导致奇怪的链接错误,执行以下操作:

  • 点击Xcode菜单的Product > Clean Build Folder
  • 打开Xcode偏好设置,找到Locations选项卡,点击Derived Data旁边的箭头,删除整个Derived Data文件夹
  • 重新编译项目
Undefined symbols for architecture arm64:
  "_VideoPlayerPluginRewindVideo", referenced from:
      _MediaPlayerCtrl_VideoPlayerPluginRewindVideo_m3082508113 in Bulk_Assembly-CSharp_2.o
     (maybe you meant: _MediaPlayerCtrl_VideoPlayerPluginRewindVideo_m3082508113)
  "_VideoPlayerPluginCurFrameTexture", referenced from:
      _MediaPlayerCtrl_VideoPlayerPluginCurFrameTexture_m1593954222 in Bulk_Assembly-CSharp_2.o
      _MediaPlayerCtrl_get_videoTexture_m2577019922 in Bulk_Assembly-CSharp_2.o
     (maybe you meant: _MediaPlayerCtrl_VideoPlayerPluginCurFrameTexture_m1593954222)
  "_VideoPlayerPluginDurationSeconds", referenced from:
      _MediaPlayerCtrl_VideoPlayerPluginDurationSeconds_m2690910420 in Bulk_Assembly-CSharp_2.o
      _MediaPlayerCtrl_get_duration_m277410481 in Bulk_Assembly-CSharp_2.o
     (maybe you meant: _MediaPlayerCtrl_VideoPlayerPluginDurationSeconds_m2690910420)
  "_VideoPlayerPluginPlayerReady", referenced from:
      _MediaPlayerCtrl_VideoPlayerPluginPlayerReady_m519815871 in Bulk_Assembly-CSharp_2.o
      _MediaPlayerCtrl_get_ready_m1468627929 in Bulk_Assembly-CSharp_2.o
     (maybe you meant: _MediaPlayerCtrl_VideoPlayerPluginPlayerReady_m519815871)
  "_VideoPlayerPluginSetSpeed", referenced from:
      _MediaPlayerCtrl_Call_SetSpeed_m1821975912 in Bulk_Assembly-CSharp_2.o
      _MediaPlayerCtrl_VideoPlayerPluginSetSpeed_m2537395036 in Bulk_Assembly-CSharp_2.o
     (maybe you meant: _MediaPlayerCtrl_VideoPlayerPluginSetSpeed_m2537395036)
  "_VideoPlayerPluginSetVolume", referenced from:
      _MediaPlayerCtrl_Call_SetVolume_m1145568362 in Bulk_Assembly-CSharp_2.o
      _MediaPlayerCtrl_VideoPlayerPluginSetVolume_m1552845941 in Bulk_Assembly-CSharp_2.o
     (maybe you meant: _MediaPlayerCtrl_VideoPlayerPluginSetVolume_m1552845941)
  "_VideoPlayerPluginResumeVideo", referenced from:
      _MediaPlayerCtrl_Call_RePlay_m309591828 in Bulk_Assembly-CSharp_2.o
      _MediaPlayerCtrl_VideoPlayerPluginResumeVideo_m2823521169 in Bulk_Assembly-CSharp_2.o
     (maybe you meant: _MediaPlayerCtrl_VideoPlayerPluginResumeVideo_m2823521169)
  "_VideoPlayerPluginExtents", referenced from:
      _MediaPlayerCtrl_VideoPlayerPluginExtents_m3404099935 in Bulk_Assembly-CSharp_2.o
      _MediaPlayerCtrl_get_videoSize_m23492929 in Bulk_Assembly-CSharp_2.o
     (maybe you meant: _MediaPlayerCtrl_VideoPlayerPluginExtents_m3404099935)
  "_VideoPlayerPluginPauseVideo", referenced from:
      _MediaPlayerCtrl_Call_Pause_m3579890352 in Bulk_Assembly-CSharp_2.o
      _MediaPlayerCtrl_VideoPlayerPluginPauseVideo_m1054515433 in Bulk_Assembly-CSharp_2.o
     (maybe you meant: _MediaPlayerCtrl_VideoPlayerPluginPauseVideo_m1054515433)
  "_VideoPlayerPluginSetTexture", referenced from:
      _MediaPlayerCtrl_VideoPlayerPluginSetTexture_m1295528375 in Bulk_Assembly-CSharp_2.o
      _MediaPlayerCtrl_Call_SetUnityTexture_m2241657163 in Bulk_Assembly-CSharp_2.o
     (maybe you meant: _MediaPlayerCtrl_VideoPlayerPluginSetTexture_m1295528375)
  "_VideoPlayerPluginStopVideo", referenced from:
      _MediaPlayerCtrl_Call_UnLoad_m2955987449 in Bulk_Assembly-CSharp_2.o
      _MediaPlayerCtrl_VideoPlayerPluginStopVideo_m2700854715 in Bulk_Assembly-CSharp_2.o
      _MediaPlayerCtrl_Call_Stop_m1894964176 in Bulk_Assembly-CSharp_2.o
     (maybe you meant: _MediaPlayerCtrl_VideoPlayerPluginStopVideo_m2700854715)
  "_VideoPlayerPluginSeekToVideo", referenced from:
      _MediaPlayerCtrl_Call_Play_m4289596389 in Bulk_Assembly-CSharp_2.o
      _MediaPlayerCtrl_Call_SetSeekPosition_m3285971868 in Bulk_Assembly-CSharp_2.o
      _MediaPlayerCtrl_VideoPlayerPluginSeekToVideo_m687589631 in Bulk_Assembly-CSharp_2.o
     (maybe you meant: _MediaPlayerCtrl_VideoPlayerPluginSeekToVideo_m687589631)
  "_VideoPlayerPluginIsPlaying", referenced from:
      _MediaPlayerCtrl_VideoPlayerPluginIsPlaying_m2767458669 in Bulk_Assembly-CSharp_2.o
      _MediaPlayerCtrl_get_isPlaying_m166503759 in Bulk_Assembly-CSharp_2.o
     (maybe you meant: _MediaPlayerCtrl_VideoPlayerPluginIsPlaying_m2767458669)
  "_VideoPlayerPluginError", referenced from:
      _MediaPlayerCtrl_Call_GetStatus_m1340805735 in Bulk_Assembly-CSharp_2.o
      _MediaPlayerCtrl_VideoPlayerPluginError_m264942449 in Bulk_Assembly-CSharp_2.o
     (maybe you meant: _MediaPlayerCtrl_VideoPlayerPluginError_m264942449)
  "_VideoPlayerPluginPlayVideo", referenced from:
      _MediaPlayerCtrl_Call_Play_m4289596389 in Bulk_Assembly-CSharp_2.o
      _MediaPlayerCtrl_VideoPlayerPluginPlayVideo_m3732859185 in Bulk_Assembly-CSharp_2.o
     (maybe you meant: _MediaPlayerCtrl_VideoPlayerPluginPlayVideo_m3732859185)
  "_VideoPlayerPluginFinish", referenced from:
      _MediaPlayerCtrl_Call_GetStatus_m1340805735 in Bulk_Assembly-CSharp_2.o
      _MediaPlayerCtrl_VideoPlayerPluginFinish_m2746721115 in Bulk_Assembly-CSharp_2.o
     (maybe you meant: _MediaPlayerCtrl_VideoPlayerPluginFinish_m2746721115)
  "_VideoPlayerPluginCurTimeSeconds", referenced from:
      _MediaPlayerCtrl_Call_GetSeekPosition_m2015813757 in Bulk_Assembly-CSharp_2.o
      _MediaPlayerCtrl_VideoPlayerPluginCurTimeSeconds_m495840142 in Bulk_Assembly-CSharp_2.o
      _MediaPlayerCtrl_get_currentTime_m3530085166 in Bulk_Assembly-CSharp_2.o
     (maybe you meant: _MediaPlayerCtrl_VideoPlayerPluginCurTimeSeconds_m495840142)
  "_VideoPlayerPluginDestroyInstance", referenced from:
      _MediaPlayerCtrl_Call_UnLoad_m2955987449 in Bulk_Assembly-CSharp_2.o
      _MediaPlayerCtrl_Call_Destroy_m2904930778 in Bulk_Assembly-CSharp_2.o
      _MediaPlayerCtrl_VideoPlayerPluginDestroyInstance_m1744225672 in Bulk_Assembly-CSharp_2.o
     (maybe you meant: _MediaPlayerCtrl_VideoPlayerPluginDestroyInstance_m1744225672)
  "_VideoPlayerPluginCanOutputToTexture", referenced from:
      _MediaPlayerCtrl_Call_Load_m4029719587 in Bulk_Assembly-CSharp_2.o
      _MediaPlayerCtrl_VideoPlayerPluginCanOutputToTexture_m32469285 in Bulk_Assembly-CSharp_2.o
     (maybe you meant: _MediaPlayerCtrl_VideoPlayerPluginCanOutputToTexture_m32469285)
  "_VideoPlayerPluginSetLoop", referenced from:
      _MediaPlayerCtrl_Call_SetLooping_m4176452013 in Bulk_Assembly-CSharp_2.o
      _MediaPlayerCtrl_VideoPlayerPluginSetLoop_m2591582794 in Bulk_Assembly-CSharp_2.o
     (maybe you meant: _MediaPlayerCtrl_VideoPlayerPluginSetLoop_m2591582794)
  "_VideoPlayerPluginLoadVideo", referenced from:
      _MediaPlayerCtrl_Call_Load_m4029719587 in Bulk_Assembly-CSharp_2.o
      _MediaPlayerCtrl_VideoPlayerPluginLoadVideo_m3560986880 in Bulk_Assembly-CSharp_2.o
     (maybe you meant: _MediaPlayerCtrl_VideoPlayerPluginLoadVideo_m3560986880)
  "_VideoPlayerPluginCreateInstance", referenced from:
      _MediaPlayerCtrl_Call_SetUnityActivity_m1877101062 in Bulk_Assembly-CSharp_2.o
      _MediaPlayerCtrl_VideoPlayerPluginCreateInstance_m3075383955 in Bulk_Assembly-CSharp_2.o
     (maybe you meant: _MediaPlayerCtrl_VideoPlayerPluginCreateInstance_m3075383955)
ld: symbol(s) not found for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

内容的提问来源于stack exchange,提问作者Raziel

火山引擎 最新活动