Xcode 3.2.4 でアプリケーションをビルドしようとしていますが、次のリンカー エラーが発生します。
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
エラーの原因となっている可能性のあるソース ファイルで行ったことを説明するのに途方に暮れています。次のように、グローバル変数として定義しているブロックがあります。
typedef void(^error_block_t)(NSError* error);
error_block_t error_handler_s = ^void(NSError* error)
{
//...
}
このブロックは、ソースの空の名前空間で定義されています (Objective-C++ をコンパイルしています)。すべてがエラーなしでコンパイルされます。
更新:ブロックを参照するルーチンのローカル変数になるようにブロックを移動することは、実行可能な (推奨されませんが) 回避策です。
何を与える?