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