Xcodeでは複数のファイルにmain()を書いてるとビルドエラーが出る

XcodeでC++を書いてたら、ビルド時に以下のエラーが発生。

duplicate symbol _main in:
    /Users/ryo/Library/Developer/Xcode/DerivedData/Test-euoydsmmaydvmzdeozayaohqokpa/Build/Intermediates/Test.build/Debug/Test.build/Objects-normal/x86_64/main.o
    /Users/ryo/Library/Developer/Xcode/DerivedData/Test-euoydsmmaydvmzdeozayaohqokpa/Build/Intermediates/Test.build/Debug/Test.build/Objects-normal/x86_64/Add.o
ld: 1 duplicate symbol for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

最初なんじゃこりゃと思ったけど、よく読めば簡単。「duplicate symbol _main」って言ってる。実際、プロジェクトの中を見てみたら、複数のファイルにmain()関数が書いてあった。

Xcodeのビルド機能は、単一のファイルをビルドしてるわけではなく、プロジェクト内の全てのファイルをひとまとめにしてビルドするので、main()が複数あったらそりゃあエラーになるよなあ、と。

解決法は、プロジェクトからファイルを除外すること(「Delete > Remove Reference」)。

Xcodeはそもそもプロジェクト単位でソフトウェアを書くためのツールなので、「高機能なエディタ」感覚で使用するのには向いていない。。。

コメントを残す

コメントを残す