Xcode Linker und Blöcke: Nicht definiert Symbol „___block_global_1“
-
28-09-2019 - |
Frage
Ich versuche, eine Anwendung in Xcode 3.2.4 und ich erhalte die folgenden Linker-Fehler zu erstellen:
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
Ich bin an einem Verlust zu erklären, was ich in meiner Quelldatei getan habe, die den Fehler verursachen könnten. Ich habe einen Block, dass ich als globalen Variable bin definieren, etwa so:
typedef void(^error_block_t)(NSError* error);
error_block_t error_handler_s = ^void(NSError* error)
{
//...
}
Dieser Block in einem leeren Namensraum in der Quelle definiert ist (ich bin Kompilieren Objective-C ++.) Alles kompiliert ohne Fehler.
Update:. , um den Block Verschieben eine lokale Variable für die Routine zu sein, dass Verweise es eine tragfähige ist (wenn auch nicht bevorzugt) Abhilfe
Was soll das?
Lösung 2
An diesem Punkt glaube ich, dieses Problem ein Fehler zu sein.
Andere Tipps
Wenn der error_handler_s
nicht exportiert werden soll, man könnte es als ein andere Abhilfe machen static
.
namespace {
...
static error_block_t error_handler_s = ^void(NSError* error) { ... };
...
}
Ansonsten glaube ich dies ein Fehler in gcc ist.