Я запускаю проект Objective C на Xcode 9 и сталкиваюсь с этой ошибкой, которая заявляет
РЕДАКТИРОВАТЬ: Использование FBXSDK от AutoDesk. Я думаю, что это связано с версией Clang, которая появилась в Xcode 9 (проект был написан в Xcode 7). Если я правильно понимаю, мне нужно вернуть Clang к более старой версии из этого ссылка на сайт. Та же проблема при использовании Unreal Engine.
Привязка разыменованного нулевого указателя к ссылке имеет неопределенное поведение
Сценарий, который я пытаюсь запустить, следующий
const FbxProperty& StaticInit(FbxObject* pObject, const char* pName, const FbxReference& pValue, bool pForceSet, FbxPropertyFlags::EFlags pFlags=FbxPropertyFlags::eNone)
{
return StaticInit(pObject, pName, FbxGetDataTypeFromEnum(FbxTypeOf(*((FbxReference*)0))), pValue, pForceSet, pFlags);
}
Метод StaticInit
const FbxProperty& StaticInit(FbxObject* pObject, const char* pName, const FbxDataType& pDataType, const FbxReference& pValue, bool pForceSet, FbxPropertyFlags::EFlags pFlags=FbxPropertyFlags::eNone)
{
bool lWasFound = false;
*this = Create(pObject, pDataType, pName, "", true, &lWasFound);
if( pForceSet || !lWasFound )
{
ModifyFlag(pFlags, true); // modify the flags before we set the value
Set(pValue); // since we will trigger callbacks in there!
}
ModifyFlag(FbxPropertyFlags::eStatic, true);
return *this;
}
Xcode лежащий в основе *((FbxReference*)0
как ошибка.
Решено путем изменения 0 на 1.
return StaticInit(pObject, pName, FbxGetDataTypeFromEnum(FbxTypeOf(*((FbxReference*)1))), pValue, pForceSet, pFlags);
Других решений пока нет …