奇怪的链接器(ld)行为,它只看到类的一半方法

时间:2011-03-22 16:20:05

标签: c++ xcode linker ld

我在XCode中有2个目标,一个包含类记录的可执行文件,如

class Record
{
  public:
  const char * getFirstName() const;
  void setFirsttName(const char * firstName);

  const char * getCompany() const;
  void setCompany(const char * company);
  ...
 }

一个单元测试包,通过bundleLoader链接到可执行文件,包含类似

的测试
...
Record record;
record.setFirsttName("aaa");
record.setCompany("bbb");

奇怪而烦人的是,我收到一个链接器错误,说它没有看到setCompany符号,但它看到了setFirsttName。完成清理和重建不会有所帮助。有人可以帮忙吗?

编辑1:

是DEAD_CODE_STRIPPING = YES。 Aaargh !!!

2 个答案:

答案 0 :(得分:0)

您的setCompany源文件中是否有Record的定义?标题中的内容只是一个声明,您需要一个定义来链接使用该方法的程序。

答案 1 :(得分:0)

您是否忘记在源文件中定义setCompany?或者你忘了用ClassName::来限定它,所以它被视为一个类方法?