XCode链接器问题CPP文件中的代码

时间:2015-11-22 18:16:33

标签: xcode cocoa objective-c++

我对XCode和一个非常简单的项目感到沮丧。

  • 我有一个Cocoa应用程序,所有.m文件都重命名为.mm,因此可以编译CPP文件。
  • 我有一个静态库来存储我所有的C ++代码。
  • 我有一个简单的类,其中包含.h文件中的标题,以及.cpp文件中的定义。

我在'未定义的架构符号'中徒劳地得到错误。

奇怪的是,如果我将所有代码放在头文件中,它就会起作用。我可以在标题和CPP文件中同时具有该定义,并且它不会抱怨重新定义函数。就好像它没有看到CPP文件存在一样。

感谢您解决此问题的任何帮助。

编辑:如果我将c ++对象从库中移动到主项目中,那么一切正常。这与静态库中的类有关。

编辑2

具体细节。代码并没有什么特别复杂。

在主项目中,有一个主要的View类。在awakeFromNib中:

- (void)awakeFromNib
{
    [super awakeFromNib];

    MyCat aCat();
}

在静态库中,我有MyCat.cpp和MyCat.h。

在头文件(MyCat.h)中

class MyCat
{
public:
    MyCat();
};

在CPP文件(MyCat.cpp)

#include "MyCat.h"

MyCat::MyCat()
{
}

错误讯息:

Undefined symbols for architecture x86_64:
  "MyCat::MyCat()", referenced from:
      -[MainView awakeFromNib] in MainView.o
ld: symbol(s) not found for architecture x86_64

如果我不使用该课程,那么该项目编译得很好。如果我将所有C ++代码放在头文件中,它将编译正常。如果我将C ++文件移动到主项目中,那么它将再次正常编译。

0 个答案:

没有答案