在Xcode 4中使用和引用多个cpp文件

时间:2012-12-21 00:28:32

标签: c++ xcode compiler-errors

我是编程新手,我目前正在开发一个项目,它有点太大而无法保存在单个cpp文件中,因此我决定将其拆分为不同cpp文件中的组成部分。

该项目有3个cpp文件;

  

main.cpp,TwinCameraCapture.cpp,FaceCalibration.cpp,

代码的所有部分都在FaceCalibration.cpp和TwinCameraCapture.cpp中,main.cpp看起来像这样:

#include "FaceCalibration.cpp"
#include "TwinCamCapture.cpp"

int main ()
{
    FaceCalibration();

    TwinCameraCapture();
}

FaceCalibration和TwinCameraCapture是各自.cpp文件中的主要功能。

现在,我知道我在这里做错了,我只是不知道究竟是什么。我在尝试编译时遇到的错误是:

  

Apple Mach-O链接器(Id)错误

     

命令/Developer/usr/bin/llvm-g++-4.2因退出代码1而失败

有人可以解释一下我做错了什么以及如何解决这个问题,或者指点我会做一个指南吗?

由于

编辑: 完整的错误消息是:

    ld: duplicate symbol getWindow(cv::Rect_<int>)   in
 /Users/facebooth/Library/Developer/Xcode/DerivedData/FullProgramTest-
awrdeznffntuoacjytwewfbjdmza/Build/Intermediates/FullProgramTest.build/Debug/FullProgramTest.build/Objects-normal/x86_64/FaceCalibration.o and 
/Users/facebooth/Library/Developer/Xcode/DerivedData/FullProgramTest-
awrdeznffntuoacjytwewfbjdmza/Build/Intermediates/FullProgramTest.build/Debug/FullProgramTest.build/Objects-normal/x86_64/main.o for architecture x86_64
    Command /Developer/usr/bin/llvm-g++-4.2 failed with exit code 1

2 个答案:

答案 0 :(得分:1)

通常,您不要将.cpp文件用作#include。你应该有一个包含的.h文件。

了解您的实际错误消息是有帮助的,而不仅仅是“它失败了”,但我怀疑它是“重复身份”或者其他一些 - 因为您的IDE已经在编译并链接您的文件TwincameraCapture.cpp然后你去把这段代码作为你的主要来源的一部分,这意味着编译器生成相同的代码两次,并且链接器说“你指的是哪一个?”当它看到两个具有完全相同名称的函数时。

答案 1 :(得分:0)

只需将包含main()函数的.cpp文件重命名为.h文件,然后适当调整#include即可。我还没有达到标题,知道为什么它在xCode或其他任何东西,但我知道这是有效的。