éditeur de liens Xcode et blocs: Undefined symbol « ___block_global_1 »
-
28-09-2019 - |
Question
Je suis en train de construire une application dans Xcode 3.2.4 et je suis obtenir l'erreur d'éditeur de liens suivant:
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
Je suis à une perte pour expliquer ce que je l'ai fait dans mon dossier source qui pourrait être à l'origine de l'erreur. J'ai un bloc que je suis en train de définir une variable globale, comme suit:
typedef void(^error_block_t)(NSError* error);
error_block_t error_handler_s = ^void(NSError* error)
{
//...
}
Ce bloc est défini dans un espace de noms vide dans la source (je compilation Objective-C ++.) Tout se compile sans erreur.
Mise à jour:. Déplacement du bloc à une variable locale pour la routine que les références qu'il est viable (mais pas préféré) solution
Ce qui donne?
La solution 2
A ce point, je crois que cette question est un bug.
Autres conseils
Si le error_handler_s
n'est pas destiné à être exporté, vous pouvez le faire static
comme une autre solution de contournement.
namespace {
...
static error_block_t error_handler_s = ^void(NSError* error) { ... };
...
}
Dans le cas contraire, je crois que ce bogue dans gcc.