1

私はプログラミングに不慣れで、現在、1つの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
4

2 に答える 2

1

通常、.cppファイルを#includeとして使用することはありません。インクルードされている.hファイルが必要です。

「失敗した」というだけでなく、実際のエラーメッセージが何であるかを知ることは役に立ちますが、IDEがすでにファイルTwincameraCapture.cppをコンパイルしてリンクしているため、「重複した識別子」などであると思われます。そのコードをメインソースの一部にすると、whicnは、コンパイラが同じコードを2回生成することを意味し、リンカは「これらのどれを意味しますか?」と言います。まったく同じ名前の2つの関数が表示されたとき。

于 2012-12-21T00:49:01.933 に答える
0

main() 関数を含まない.cpp ファイルの名前を .h ファイルに変更し、#include を適切に調整するだけで機能します。xCodeなどでなぜそうなのかをヘッダーにたどり着くには十分ではありませんが、これが機能することはわかっています。

于 2013-08-24T04:21:50.457 に答える