Странный EXC_BAD_ACCESS в приложении для iOS

Я использую MFMessageComposeViewController , чтобы послать сообщению, по моему мнению, диспетчера. Перед импортированием Google Protobuf Lib, все вещи работы. Но после импортирования lib, я всегда получаю ошибку EXC_BAD_ACCESS в линии:

MFMessageComposeViewController *messager = [[MFMessageComposeViewController alloc] init];

But in the Debug Navigator, I always get the following stack, which leads me to bool SimpleDescriptorDatabase::DescriptorIndex::AddFile method in descriptor_database.cpp and then to bool InsertIfNotPresent method in map-util.h. Both descriptor_database.cpp and map-util.h are from Google Protobuf Lib.

Stack

Я смущен, почему инициализация MFMessageComposeViewController имеет какое-либо отношение к Google Protobuf Lib .

Удаление lib может решить проблему, но это необходимо в моем коммуникационном двигателе.

У меня есть googled вокруг без найденного ответа. Спасибо, если кто-либо может привести меня к правильному направлению.

Я не уверен, помогают ли те два снимка экрана:

Screenshot 1 Screenshot 2

2
добавлено
Просмотры: 1
de

6 ответы

Измените protobuf параметр компилятора библиотеки "Apple компилятор LLVM 4.2 - Кодекс, Generation\Symbols, Скрытый по умолчанию" к ДА, решил бы эту проблему.

4
добавлено
Я don' t, средний, чтобы возродить этот вопрос, но этот ответ, помог мне преодолеть ту же самую проблему, которую op имел..., но я хотел бы знать то, что точно фиксирует это изменение?
добавлено автор Tim Reddy, источник
Работа в XCode 5.0.2 и LLVM 5.0 также.
добавлено автор Reconquistador, источник
Это, кажется, хорошее и легкое решение. Хотя we' ре, в настоящее время отсылающее lib как собранный статический lib, I' ll дают ему попытку.
добавлено автор Allen Hsu, источник

Измените protobuf параметр компилятора библиотеки "Apple компилятор LLVM 4.2 - Кодекс, Generation\Symbols, Скрытый по умолчанию" к ДА, решил бы эту проблему.

4
добавлено
Я don' t, средний, чтобы возродить этот вопрос, но этот ответ, помог мне преодолеть ту же самую проблему, которую op имел..., но я хотел бы знать то, что точно фиксирует это изменение?
добавлено автор Tim Reddy, источник
Работа в XCode 5.0.2 и LLVM 5.0 также.
добавлено автор Reconquistador, источник
Это, кажется, хорошее и легкое решение. Хотя we' ре, в настоящее время отсылающее lib как собранный статический lib, I' ll дают ему попытку.
добавлено автор Allen Hsu, источник

Компилирование protobuf с gcc с флагом-fvisibility=hidden (без символов) работало на меня (собранный это для arm7)

2
добавлено

Компилирование protobuf с gcc с флагом-fvisibility=hidden (без символов) работало на меня (собранный это для arm7)

2
добавлено

Это произошло со мной также. Моя трассировка стека не была точно тем же самым, но подобный.

От следа очевидно, что запрос [MFMessageComposeViewController init] заставляет libprotobuf.dylib быть загруженным.

Это - dylib Apple, так MFMessageComposeViewController , любой прямо или косвенно полагается на libprotobuf внутренне. Погрузка его, по-видимому, сталкивается с вашей статической версией protobuf.

Я не выяснил, как/почему это происходит.

Я работал вокруг этой проблемы, устанавливая библиотеку стандарта C++ в libc ++. ОТМЕТЬТЕ: необходимо будет также построить все библиотеки C++, с которыми вы связываетесь с libc ++. Когда вы строите их, удостоверяются, что вы устанавливаете CXX=clang ++ и CXXFLAGS = '-stdlib=libc ++ '.

ПРИМЕЧАНИЕ: Это вынудит вас быть нацеленными на iOS 5.0 +, поскольку libc ++ не доступно на более ранних версиях iOS.

0
добавлено

Это произошло со мной также. Моя трассировка стека не была точно тем же самым, но подобный.

От следа очевидно, что запрос [MFMessageComposeViewController init] заставляет libprotobuf.dylib быть загруженным.

Это - dylib Apple, так MFMessageComposeViewController , любой прямо или косвенно полагается на libprotobuf внутренне. Погрузка его, по-видимому, сталкивается с вашей статической версией protobuf.

Я не выяснил, как/почему это происходит.

Я работал вокруг этой проблемы, устанавливая библиотеку стандарта C++ в libc ++. ОТМЕТЬТЕ: необходимо будет также построить все библиотеки C++, с которыми вы связываетесь с libc ++. Когда вы строите их, удостоверяются, что вы устанавливаете CXX=clang ++ и CXXFLAGS = '-stdlib=libc ++ '.

ПРИМЕЧАНИЕ: Это вынудит вас быть нацеленными на iOS 5.0 +, поскольку libc ++ не доступно на более ранних версиях iOS.

0
добавлено