我正在尝试在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