質問

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のバグだと思います。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top