Xcodeリンカーとブロック:未定義のシンボル「___block_global_1」
-
28-09-2019 - |
質問
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 ++をコンパイルしています。)すべてがエラーなしでコンパイルされます。
アップデート: ブロックを、それを参照するルーチンのローカル変数に移動すると、それが実行可能である(好まれていませんが)回避策です。
何が与えるのですか?
解決 2
この時点で、この問題はバグだと思います。
他のヒント
場合 error_handler_s
エクスポートすることを意図していません、あなたはそれを作ることができます static
別の回避策として。
namespace {
...
static error_block_t error_handler_s = ^void(NSError* error) { ... };
...
}
そうでなければ、これはGCCのバグだと思います。
所属していません StackOverflow