iOS整合Unity项目加入SceneKit报错Undefined symbols for architecture arm64: "_OBJC_CLASS_$_SCNLight"

3 篇文章 0 订阅
2 篇文章 0 订阅

问题描述

在Unity导出的iOS项目中进行开发时,自定义的视图中使用SceneKit时报错:

ld: warning: arm64 function not 4-byte aligned: ltmp0 from /Users/hustlion/idc/20161217园博园/HolyEvilCapture/Libraries/libiPhone-lib.a(unwind_test_arm64.o)
ld: warning: arm64 function not 4-byte aligned: _unwind_tester from /Users/hustlion/idc/20161217园博园/HolyEvilCapture/Libraries/libiPhone-lib.a(unwind_test_arm64.o)
Undefined symbols for architecture arm64:
  "_OBJC_CLASS_$_SCNLight", referenced from:
      objc-class-ref in playerInfoViewController.o
  "_OBJC_CLASS_$_SCNCamera", referenced from:
      objc-class-ref in playerInfoViewController.o
  "_SCNLightTypeOmni", referenced from:
      -[playerInfoViewController addScene] in playerInfoViewController.o
  "_OBJC_CLASS_$_SCNNode", referenced from:
      objc-class-ref in playerInfoViewController.o
  "_OBJC_CLASS_$_SCNScene", referenced from:
      objc-class-ref in playerInfoViewController.o
  "_SCNLightTypeAmbient", referenced from:
      -[playerInfoViewController addScene] in playerInfoViewController.o
ld: symbol(s) not found for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

原因分析

笔者在单独写UI界面(没有与Unity整合时),使用SceneKit只需要引用对应的头文件。但是与Unity整合后,发现需要在Build Phases中引入SceneKit.framework才能正常编译。可能是Unity导出项目的某些编译设定导致了要额外引入SceneKit.framework才能使用SceneKit。

解决办法

在Build Phases中引入SceneKit.framework,如图所示:
引入SceneKit.framework

小结

遇到Undefined symbols for architecture arm64: "_OBJC_CLASS_$_SCNLight"类似的错误时,可以先考虑是否有相应的framework可以引入。

参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值