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?

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top