forestlin1212/unity-ios-framework

Linker errors

Opened this issue · 3 comments

Thanks for sharing this code. Quick question regarding your example app:

I had to add libIphone to the framework to get it compiled but when I run the unity-framework-ios test project I get tons of linker errors for missing symbols. See below an example.

This is using Xcode9/Unity2017.4 and trying to run on an iPhone 8. Any idea?

Undefined symbols for architecture arm64:
  "_UnityNotifyDeferSystemGesturesChange", referenced from:
      iphone::DeliverUnityUIEvents() in UnityOutFramework(platformdependent_iphoneplayer_0.o)
  "_il2cpp_gchandle_get_target", referenced from:
      ScriptingGCHandle::ResolveBackendNativeGCHandle(unsigned long long) in UnityOutFramework(runtime_scripting_3.o)
  "_il2cpp_gchandle_free", referenced from:
      ScriptingGCHandle::ReleaseAndClear() in UnityOutFramework(runtime_scripting_3.o)
  "_il2cpp_gchandle_new_weakref", referenced from:
      ScriptingGCHandle::Acquire(ScriptingObjectPtr, ScriptingGCHandleWeakness) in UnityOutFramework(runtime_scripting_3.o)
  "_il2cpp_gchandle_new", referenced from:
      ScriptingGCHandle::Acquire(ScriptingObjectPtr, ScriptingGCHandleWeakness) in UnityOutFramework(runtime_scripting_3.o)
  "_il2cpp_unhandled_exception", referenced from:
      ScriptingInvocation::Invoke(ScriptingExceptionPtr*, bool) in UnityOutFramework(runtime_scripting_2.o)
  "_il2cpp_free", referenced from:
      Scripting::ErrorMessageForUnsupportedEnumField(ScriptingFieldPtr) in UnityOutFramework(runtime_scripting_1.o)
  "_il2cpp_exception_from_name_msg", referenced from:
      Scripting::CreateManagedExceptionImpl(char const*, char const*, char const*, char*) in UnityOutFramework(runtime_scripting_1.o)
      Scripting::RaiseMonoException(char const*, ...) in UnityOutFramework(runtime_scripting_1.o)
      Scripting::CreateNullExceptionObject(ScriptingObjectPtr) in UnityOutFramework(runtime_scripting_1.o)
  "_il2cpp_runtime_unhandled_exception_policy_set", referenced from:
      InitializeIl2CppFromMain(core::basic_string<char, core::StringStorageDefault<char> > const&, core::basic_string<char, core::StringStorageDefault<char> > const&, int, char const**) in UnityOutFramework(runtime_scripting_1.o)
  "_il2cpp_set_config_dir", referenced from:
      InitializeIl2CppFromMain(core::basic_string<char, core::StringStorageDefault<char> > const&, core::basic_string<char, core::StringStorageDefault<char> > const&, int, char const**) in UnityOutFramework(runtime_scripting_1.o)
  "_il2cpp_set_data_dir", referenced from:
      InitializeIl2CppFromMain(core::basic_string<char, core::StringStorageDefault<char> > const&, core::basic_string<char, core::StringStorageDefault<char> > const&, int, char const**) in UnityOutFramework(runtime_scripting_1.o)
  "_il2cpp_init", referenced from:
      InitializeIl2CppFromMain(core::basic_string<char, core::StringStorageDefault<char> > const&, core::basic_string<char, core::StringStorageDefault<char> > const&, int, char const**) in UnityOutFramework(runtime_scripting_1.o)
  "_il2cpp_set_config", referenced from:
      InitializeIl2CppFromMain(core::basic_string<char, core::StringStorageDefault<char> > const&, core::basic_string<char, core::StringStorageDefault<char> > const&, int, char const**) in UnityOutFramework(runtime_scripting_1.o)
  "_il2cpp_domain_assembly_open", referenced from:
      MonoManager::LoadAssemblies() in UnityOutFramework(runtime_scripting_1.o)
  "_il2cpp_add_internal_call", referenced from:
      scripting_add_internal_call(char const*, void const*) in UnityOutFramework(runtime_scriptingbackend_il2cpp_0.o)
  "_il2cpp_unity_liveness_calculation_from_root", referenced from:
      scripting_liveness_calculation_from_root(ScriptingObjectPtr, void*) in UnityOutFramework(runtime_scriptingbackend_il2cpp_0.o)
  "_il2cpp_domain_get", referenced from:
      scripting_domain_get() in UnityOutFramework(runtime_scriptingbackend_il2cpp_0.o)
      MonoManager::LoadAssemblies() in UnityOutFramework(runtime_scripting_1.o)
  "_il2cpp_get_corlib", referenced from:
      scripting_get_corlib() in UnityOutFramework(runtime_scriptingbackend_il2cpp_0.o)
      MonoManager::GetScriptingClass(char const*, char const*, char const*) in UnityOutFramework(runtime_scripting_1.o)
      Scripting::CreateManagedExceptionImpl(char const*, char const*, char const*, char*) in UnityOutFramework(runtime_scripting_1.o)
      Scripting::CreateNullExceptionObject(ScriptingObjectPtr) in UnityOutFramework(runtime_scripting_1.o)

@ohwhen - I can see you managed to integrate Unity into a React Native app somehow (the Footlocker one)
Congrats! - Did you end up compiling to a framework (like here)?

@liamwalsh oops sorry just seeing this now, yes I managed to compile it to a framework as a static library. I'm actually in the process of opensourcing our approach soon (aiming this month).

The Foot Locker app is a native Swift app, we didn't use React Native but did do most of our UI as a simple embedded webapp.

i meet same problem