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?

Était-ce utile?

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top