Вопрос

Я пытаюсь создать приложение в 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.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top