1

我刚刚更新到 XCode 4.4,现在得到这个链接器错误:

Undefined symbols for architecture armv7:
  "_objc_copyCppObjectAtomic", referenced from:
      -[CLASSNAME box2DBodiesList] in CLASSFILENAME.o
ld: symbol(s) not found for architecture armv7
clang: error: linker command failed with exit code 1 (use -v to see invocation)

鉴于:@property(只读)std::vector box2DBodiesList;

这是一个 iOS 应用程序。

有什么线索吗?

4

1 回答 1

4

当我升级到 XCode 4.4 时,我遇到了同样的问题。

问题可能是该属性被声明为只读,但是您在类实现中为其分配了一个值,可能是在初始化程序中。

您可以通过在头文件中将属性声明为 readwrite 或在实现文件 (.mm) 中的类类别声明中将其重新声明为 readwrite 来解决此问题,如下所示

@interface CLASSNAME()
@property(readwrite) std:vector box2DBodiesList;
@end

缺少的函数 _objc_copyCppObjectAtomic 用于复制 CPP 对象(以使用 C++ 数据类型读写属性),并在属性标记为只读时排除(无需复制)。

希望这可以帮助!

/AndLen

于 2012-07-31T13:23:16.140 回答