Xcode linker e blocca: non definito simbolo “___block_global_1”
-
28-09-2019 - |
Domanda
Sto cercando di creare un'applicazione in Xcode 3.2.4 e sto ottenendo il seguente errore di linker:
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
Sono in perdita per spiegare quello che ho fatto nel mio file di origine che potrebbe essere la causa dell'errore. Ho un blocco che io sto definendo come una variabile globale, in questo modo:
typedef void(^error_block_t)(NSError* error);
error_block_t error_handler_s = ^void(NSError* error)
{
//...
}
Questo blocco è definito in uno spazio dei nomi vuoto nella fonte (Sto compilando Objective-C ++.) Compilazione tutto senza errori.
Aggiornamento:. Spostamento del blocco da una variabile locale per la routine che i riferimenti si tratta di una valida (anche se non preferito) soluzione
Ciò che dà?
Soluzione 2
A questo punto credo che questo problema è un bug.
Altri suggerimenti
Se il error_handler_s
non è destinato ad essere esportato, si potrebbe rendere static
come un'altra soluzione.
namespace {
...
static error_block_t error_handler_s = ^void(NSError* error) { ... };
...
}
In caso contrario, credo che questo sia un bug in gcc.