0

これは私が得たエラーログです

Ld /Users/apple/Library/Developer/Xcode/DerivedData/SMTPExample-dkhosyetbsajvtcdyyalnckswjgd/Build/Products/Debug-iphonesimulator/SMTPExample.app/SMTPExample normal i386
    cd /Users/apple/Desktop/SMTPExample
    setenv MACOSX_DEPLOYMENT_TARGET 10.6
    setenv PATH "/xcode4/Platforms/iPhoneSimulator.platform/Developer/usr/bin:/xcode4/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin"
    /xcode4/Platforms/iPhoneSimulator.platform/Developer/usr/bin/llvm-gcc-4.2 -arch i386 -isysroot /xcode4/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator4.3.sdk -L/Users/apple/Library/Developer/Xcode/DerivedData/SMTPExample-dkhosyetbsajvtcdyyalnckswjgd/Build/Products/Debug-iphonesimulator -F/Users/apple/Library/Developer/Xcode/DerivedData/SMTPExample-dkhosyetbsajvtcdyyalnckswjgd/Build/Products/Debug-iphonesimulator -F/Users/apple/Desktop/SMTPExample -filelist /Users/apple/Library/Developer/Xcode/DerivedData/SMTPExample-dkhosyetbsajvtcdyyalnckswjgd/Build/Intermediates/SMTPExample.build/Debug-iphonesimulator/SMTPExample.build/Objects-normal/i386/SMTPExample.LinkFileList -mmacosx-version-min=10.6 -Xlinker -objc_abi_version -Xlinker 2 -framework Security -framework CFNetwork -framework UIKit -framework Foundation -framework CoreGraphics -framework DropboxSDK -o /Users/apple/Library/Developer/Xcode/DerivedData/SMTPExample-dkhosyetbsajvtcdyyalnckswjgd/Build/Products/Debug-iphonesimulator/SMTPExample.app/SMTPExample

ld: duplicate symbol _EstimateBas64EncodedDataSize in /Users/apple/Desktop/SMTPExample/DropboxSDK.framework/DropboxSDK and /Users/apple/Library/Developer/Xcode/DerivedData/SMTPExample-dkhosyetbsajvtcdyyalnckswjgd/Build/Intermediates/SMTPExample.build/Debug-iphonesimulator/SMTPExample.build/Objects-normal/i386/Base64Transcoder.o for architecture i386
collect2: ld returned 1 exit status
Command /xcode4/Platforms/iPhoneSimulator.platform/Developer/usr/bin/llvm-gcc-4.2 failed with exit code 1
4

1 に答える 1

1

これはリンカ エラーです (出力エラーはGNU リンカ プログラムによって生成されたため、出力の「ld」はこれを示しています)。

何が起こったかというと、2 つの同一の宣言が 2 つの別個のソース コード ファイルから別々にコンパイルされたということです。これらのソース ファイルの 1 つに、Base64Transcoder.mまたはBase64Transcoder.cpp(問題の原因となったコンパイル済みファイルが であるため) という名前が付けられている可能性がありますBase64Transcoder.o。問題の宣言は_EstimateBas64EncodingDataSize. このシンボルは、異なるソース コード ファイル内で複数回宣言されており、コンパイルされた 2 つのソース コード ファイルが異なるため、リンカーはエラーをスローしています。コンパイルされているソース コード全体に目を通し、競合を解決する必要があります。

これが役に立ち、理にかなっていることを願っています。リンカの問題を理解して対処するのは難しいといつも思っていました。C/C++/Objective-C コードのプログラム コンパイルのリンカ段階について読むことを強くお勧めします (これは非常に良いガイドです)。そうすれば、ボンネットの下で何が起こっているのかをよりよく理解できるはずです! :)

于 2012-05-28T06:07:11.303 に答える