Проект Unity Xcode PlayerSettings_GetBundleIdentifier

В настоящее время я пытаюсь создать приложение iOS из Unity, но продолжаю сталкиваться с этими 4 ошибками:

Undefined symbols for architecture arm64:
"_utilityBundleIdentifier", referenced from:
      _NativeBinding_utilityBundleIdentifier_m3566456099 in Bulk_Assembly-CSharp-firstpass_4.o
      _NativeBinding_GetBundleIdentifier_m2869188113 in Bulk_Assembly-CSharp-firstpass_4.o
      _PlayerSettings_GetBundleIdentifier_m1189967083 in Bulk_Assembly-CSharp-firstpass_4.o
     (maybe you meant: _NativeBinding_utilityBundleIdentifier_m3566456099)
  "_utilityBundleVersion", referenced from:
      _NativeBinding_utilityBundleVersion_m3211654534 in Bulk_Assembly-CSharp-firstpass_4.o
      _NativeBinding_GetBundleVersion_m3758909934 in Bulk_Assembly-CSharp-firstpass_4.o
      _PlayerSettings_GetBundleVersion_m1248687572 in Bulk_Assembly-CSharp-firstpass_4.o
     (maybe you meant: _NativeBinding_utilityBundleVersion_m3211654534)
  "_debugProLogMessage", referenced from:
      _NativeBinding_debugProLogMessage_m135661794 in Bulk_Assembly-CSharp-firstpass_2.o
     (maybe you meant: _NativeBinding_debugProLogMessage_m135661794)
ld: symbol(s) not found for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

Код выхода 1. Неопределенные символы для архитектуры arm64 обычно указывают на фреймворк, который не был включен, но эти ссылки указывают на PlayerSettings_GetBundleIdentifier, который, насколько я могу судить, является свойством Unity.

Также, когда идентификатор пакета, версия и сборка установлены в XCode:

Идентификатор пакета Xcode

Это другие флаги компоновщика Другие флаги компоновщика

Что означает эта ошибка? Я забыл включить фреймворк и какой именно или что-то не так в настройках Unity или XCode?


person Philippe Creytens    schedule 13.12.2016    source источник


Ответы (1)


Проблема возникла из-за того, что 3 метода, на которые ссылались в VoxelBusters, не существовали ни в одном из файлов .h и .m, поставляемых с подключаемым модулем. Используя __Internal DLLImport, вы связываете методы с кодом Objective-C.

[DllImport("__Internal")]
private static extern string utilityBundleVersion ();
[DllImport("__Internal")]
private static extern string utilityBundleIdentifier ();
[DllImport("__Internal")]
public static extern void debugProLogMessage (string _message, eConsoleLogType _type, string _stackTrace);

Не существовало в проекте XCode. Когда я добавляю эти методы в AppDelegate.h и AppDelegate.m из Unity, ошибки исчезают, и теперь я могу продолжать работу.

person Philippe Creytens    schedule 13.12.2016