enlazador Xcode y bloques: Undefined symbol “___block_global_1”
-
28-09-2019 - |
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?
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.