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

标签 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 Linker (Id) Error

Command /Developer/usr/bin/llvm-g++-4.2 failed with exit code 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

最佳答案

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

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

关于c++ - 在 Xcode 4 中使用和引用多个 cpp 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13982653/

相关文章:

c++ - ISO C++ 禁止声明没有类型的 ‘Node’

c++ - 回顾C++:从Int转换为Char

ios - Objective-c 从另一个 View Controller 重新加载 TableView

compiler-errors - 键入int ref但应为int

iOS/Xcode/ Storyboard : How to adjust size of UITableView in UIViewController

xcode - 如何在 Swift 中表示 NULL 选择器

MySQL C API 编译错误,找不到 crtdbg.h

c++ - 幂函数输出错误 - C

c++ - NuGet 不添加包含目录

c++ - 使用 C++ 计算执行时间,而不是使用 <time.h>