Pregunta

Estoy tratando de construir una aplicación en Xcode 3.2.4 y estoy recibiendo el siguiente error de vinculador:

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

Estoy en una pérdida para explicar lo que he hecho en mi archivo de origen que podría ser la causa del error. Tengo un bloque que estoy definiendo como una variable global, así:

typedef void(^error_block_t)(NSError* error);

error_block_t error_handler_s = ^void(NSError* error)
{
    //...
}

Este bloque se define en un espacio de nombres vacío en la fuente (Estoy compilando Objective-C ++.) Compila todo sin error.

Actualización:. Mover el bloque sea una variable local para la rutina que las referencias es una solución viable (aunque no se prefiere)

Lo que da?

¿Fue útil?

Solución 2

En este punto, creo que este problema de un error.

Otros consejos

Si el error_handler_s no está destinado a ser exportado, que podría hacer que static como otra solución.

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

De lo contrario, creo que esto es un error en gcc.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top