2016-01-22 2 views
0

У меня есть проект Unity 5.3.1 iOS, который также использует новую многопользовательскую сеть UNet. Страшные вещи. Когда я построить и запустить проект, я получаю следующее сообщение об ошибке в Xcode:Ошибка Undeeclared Identifier Unity IOS для Xcode

Use of undeclared identifier `IL2CPP_RAISE_MANAGED_EXCEPTION` 

Проект прекрасно работает в редакторе Unity. Он находится в огромном сценарии Bulk_Generics_10.cpp , который имеет дело с System.Comparison1<UnityEngine.Networking.NetworkSystem.PeerInfoPlayer

Вот блок кода, в котором найдена ошибка.

// System.Void 
System.Linq.Enumerable/<CreateDistinctIterator>c__Iterator3`1<System.Object>::Reset() 
extern TypeInfo* 
NotSupportedException_t1382227673_0_il2cpp_TypeInfo_var; extern const 
uint32_t 
U3CCreateDistinctIteratorU3Ec__Iterator3_1_Reset_m_1278777949_0_MetadataUsageId; 
extern "C" void 
U3CCreateDistinctIteratorU3Ec__Iterator3_1_Reset_m_1278777949_0_gshared 
(U3CCreateDistinctIteratorU3Ec__Iterator3_1_t1454147488_0 * __this, 
const MethodInfo* method) { static bool s_Il2CppMethodIntialized; if 
(!s_Il2CppMethodIntialized) {  il2cpp_codegen_initialize_method 
(U3CCreateDistinctIteratorU3Ec__Iterator3_1_Reset_m_1278777949_0_MetadataUsageId); 
     s_Il2CppMethodIntialized = true; } { 
     NotSupportedException_t1382227673_0 * L_0 = 
(NotSupportedException_t1382227673_0 *)il2cpp_codegen_object_new 
(NotSupportedException_t1382227673_0_il2cpp_TypeInfo_var); 
     NotSupportedException__ctor_m149930845_0(L_0, /*hidden 
argument*/NULL);  IL2CPP_RAISE_MANAGED_EXCEPTION(L_0); } } 

Похоже, что Unity не передал его чисто на Xcode. Мне интересно, есть ли какая-то корректировка, которую мне нужно сделать в Unity.

Как исправить эту ошибку?

+0

Вы смогли исправить это? Начался этот вопрос после перехода на Unity 5.3.1p3. – Sreejit

+0

Я загрузил исправления с веб-страницы Unity, и проблема исчезла. Найдите патч, который соответствует версии Unity, которую вы используете. –

ответ

0

Это новая проблема с пакетами сборки для разных платформ, которые являются необязательными в установщике. Если вы устанавливаете платформу и затем обновляете свою версию Unity, но не устанавливаете эту платформу во второй установке, старая версия платформы останется и вызовет проблемы.

Мое решение состояло в том, чтобы полностью уничтожить мою папку Unity3d и переустановить с помощью правильных платформ.

связанные темы: http://forum.unity3d.com/threads/il2cpp_raise_managed_exception-undeclared-identifier.382377/

+0

Thanks Meursault334! Я переустановил последнюю версию и установил исправления на странице Unity. Один или оба работали. –

0

Насколько я помню System.Linq поддерживается прошивкой.

Здесь поток также существует по этому поводу,

Большинство методов расширения Linq из Linq для коллекций не работают с IEnumerables на прошивкой, так как они требуют выполнения AOT компилятор, который не поддерживается.

Однако есть библиотека Linq for iOS в Asset Store, которая похожа на Linq, но не требует компилятора времени исполнения. Таким образом, вы можете использовать его на iOS.

http://forum.unity3d.com/threads/linq-on-ios.84147/

+0

Спасибо Хамза Хасан! Я не настраивал или не пытался использовать библиотеку Linq, но если ошибки возвращаются таинственно, как они появились, я буду использовать этот совет! –