【问题标题】:Using and referencing multiple cpp files in Xcode 4在 Xcode 4 中使用和引用多个 cpp 文件
【发布时间】:2012-12-21 00:28:32
【问题描述】:

我是编程新手,我目前正在处理一个太大而无法保存在单个 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

【问题讨论】:

    标签: c++ xcode compiler-errors


    【解决方案1】:

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

    知道您的实际错误消息是什么会很有帮助,而不仅仅是“失败”,但我怀疑它是“重复的标识符”或类似的 - 因为您的 IDE 已经在编译和链接您的文件 TwincameraCapture.cpp ,然后你将这段代码作为你的主要源代码的一部分,这意味着编译器会生成两次相同的代码,链接器会说“你指的是哪一个?”当它看到两个名称完全相同的函数时。

    【讨论】:

    • 如何创建 .h 文件?
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-11-12
      • 2015-09-08
      • 1970-01-01
      • 2011-03-13
      • 2014-03-24
      • 1970-01-01
      相关资源
      最近更新 更多