我是编程新手,我目前正在开发一个项目,它有点太大而无法保存在单个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
答案 0 :(得分:1)
通常,您不要将.cpp文件用作#include。你应该有一个包含的.h文件。
了解您的实际错误消息是有帮助的,而不仅仅是“它失败了”,但我怀疑它是“重复身份”或者其他一些 - 因为您的IDE已经在编译并链接您的文件TwincameraCapture.cpp然后你去把这段代码作为你的主要来源的一部分,这意味着编译器生成相同的代码两次,并且链接器说“你指的是哪一个?”当它看到两个具有完全相同名称的函数时。
答案 1 :(得分:0)
只需将不包含main()函数的.cpp文件重命名为.h文件,然后适当调整#include即可。我还没有达到标题,知道为什么它在xCode或其他任何东西,但我知道这是有效的。