Xcode Linker и блоки: неопределенный символ "___block_global_1"
-
28-09-2019 - |
Вопрос
Я пытаюсь создать приложение в XCode 3.2.4 и получаю ошибку следующую ссылки:
Undefined symbols:
"___block_global_1", referenced from:
___block_holder_tmp_1.120 in foobarbaz.o
ld: symbol(s) not found
collect2: ld returned 1 exit status
Я в потере, чтобы объяснить, что я сделал в моем исходном файле, который может вызвать ошибку. У меня есть блок, который я определяю как глобальную переменную, как так:
typedef void(^error_block_t)(NSError* error);
error_block_t error_handler_s = ^void(NSError* error)
{
//...
}
Этот блок определяется в пустом пространстве имен в источнике (я компилирую объектив-C ++.) Все компилируется без ошибки.
Обновлять: Перемещение блока, чтобы быть локальной переменной для рутины, которые ссылки на это жизнеспособный (хотя и не предпочтительный) обходной путь.
Что дает?
Решение 2
На данный момент я верю эту проблему быть ошибкой.
Другие советы
Если то error_handler_s
не предназначен для экспорта, вы могли бы сделать это static
как другой обходной путь.
namespace {
...
static error_block_t error_handler_s = ^void(NSError* error) { ... };
...
}
В противном случае я считаю, что это ошибка в GCC.