Компоновщик Xcode и блоки: неопределенный символ "___block_global_1" - PullRequest
1 голос
/ 08 октября 2010

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

Этот блок определен в пустом пространстве имен в источнике (я компилирую Objective-C ++.) Все компилируется безошибка.

Обновление: Перемещение блока в локальную переменную для подпрограммы, которая ссылается на жизнеспособный (хотя и не предпочтительный) обходной путь.

Что дает?

Ответы [ 2 ]

0 голосов
/ 28 октября 2010

На данный момент я считаю эту проблему ошибкой.

0 голосов
/ 08 октября 2010

Если error_handler_s не предназначен для экспорта, вы можете сделать его static в качестве другого обходного пути.

namespace {
  ...
  static error_block_t error_handler_s = ^void(NSError* error) { ... };
  ...
}

В противном случае, я считаю, что это ошибка в gcc.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...