声明__block变量时出错,"体系结构x86_64的未定义符号"

时间:2014-07-24 21:41:29

标签: objective-c linker-errors

这是一个使用__block变量的简单程序:

typedef void (^incrementBlock)(void);

__block int incrementMe = 0;

incrementBlock add_one = ^{
   incrementMe++;
};

incrementBlock add_two = ^{
   incrementMe++;
   incrementMe++;
};

add_one();
add_two();

printf("%d", incrementMe);

当我编译它时,我收到此错误:

  

架构x86_64的未定义符号:“___ objc_personality_v0”,   引自:         _main in test-b0a9a6.o         test-b0a9a6.o中的Dwarf异常展开信息(__eh_frame)ld:未找到架构x86_64 clang的符号:错误:链接器   命令失败,退出代码为1(使用-v查看调用)

incrementMe声明为__block int,当我发表评论时,这肯定是个问题。
我尝试用gcc进行编译,但它也没有用。

我从一本书中或多或少地直接得到了这个例子,所以它应该有效。

我的声明是否已被弃用?我应该以不同方式声明可变块变量吗?

1 个答案:

答案 0 :(得分:1)

您的代码很好,您只需要确保链接Objective-C运行时库。将-lobjc添加到您的链接器命令行,您应该很好。