1.Xcode出現(xiàn)錯(cuò)誤。
Undefined symbols for architecture x86_64:
"_IJKMPMediaPlaybackIsPreparedToPlayDidChangeNotification", referenced from:
-[IJKMoviePlayerSvodViewController installMovieNotificationObservers] in IJKMoviePlayerSvodViewController.o
-[IJKMoviePlayerSvodViewController removeMovieNotificationObservers] in IJKMoviePlayerSvodViewController.o
-[IJKMoviePlayerPplayViewController installMovieNotificationObservers] in IJKMoviePlayerPplayViewController.o
-[IJKMoviePlayerPplayViewController removeMovieNotificationObservers] in IJKMoviePlayerPplayViewController.o
-[IJKMoviePlayerUplayViewController installMovieNotificationObservers] in IJKMoviePlayerUplayViewController.o
-[IJKMoviePlayerUplayViewController removeMovieNotificationObservers] in IJKMoviePlayerUplayViewController.o
"_IJKMPMoviePlayerLoadStateDidChangeNotification", referenced from:
-[IJKMoviePlayerSvodViewController installMovieNotificationObservers] in IJKMoviePlayerSvodViewController.o
-[IJKMoviePlayerSvodViewController removeMovieNotificationObservers] in IJKMoviePlayerSvodViewController.o
-[IJKMoviePlayerPplayViewController installMovieNotificationObservers] in IJKMoviePlayerPplayViewController.o
-[IJKMoviePlayerPplayViewController removeMovieNotificationObservers] in IJKMoviePlayerPplayViewController.o
-[IJKMoviePlayerUplayViewController installMovieNotificationObservers] in IJKMoviePlayerUplayViewController.o
-[IJKMoviePlayerUplayViewController removeMovieNotificationObservers] in IJKMoviePlayerUplayViewController.o
"_IJKMPMoviePlayerPlaybackDidFinishNotification", referenced from:
-[IJKMoviePlayerSvodViewController installMovieNotificationObservers] in IJKMoviePlayerSvodViewController.o
-[IJKMoviePlayerSvodViewController removeMovieNotificationObservers] in IJKMoviePlayerSvodViewController.o
-[IJKMoviePlayerPplayViewController installMovieNotificationObservers] in IJKMoviePlayerPplayViewController.o
-[IJKMoviePlayerPplayViewController removeMovieNotificationObservers] in IJKMoviePlayerPplayViewController.o
-[IJKMoviePlayerUplayViewController installMovieNotificationObservers] in IJKMoviePlayerUplayViewController.o
-[IJKMoviePlayerUplayViewController removeMovieNotificationObservers] in IJKMoviePlayerUplayViewController.o
"_IJKMPMoviePlayerPlaybackDidFinishReasonUserInfoKey", referenced from:
-[IJKMoviePlayerSvodViewController moviePlayBackDidFinish:] in IJKMoviePlayerSvodViewController.o
-[IJKMoviePlayerPplayViewController moviePlayBackDidFinish:] in IJKMoviePlayerPplayViewController.o
-[IJKMoviePlayerUplayViewController moviePlayBackDidFinish:] in IJKMoviePlayerUplayViewController.o
"_IJKMPMoviePlayerPlaybackStateDidChangeNotification", referenced from:
-[IJKMoviePlayerSvodViewController installMovieNotificationObservers] in IJKMoviePlayerSvodViewController.o
-[IJKMoviePlayerSvodViewController removeMovieNotificationObservers] in IJKMoviePlayerSvodViewController.o
-[IJKMoviePlayerPplayViewController installMovieNotificationObservers] in IJKMoviePlayerPplayViewController.o
-[IJKMoviePlayerPplayViewController removeMovieNotificationObservers] in IJKMoviePlayerPplayViewController.o
-[IJKMoviePlayerUplayViewController installMovieNotificationObservers] in IJKMoviePlayerUplayViewController.o
-[IJKMoviePlayerUplayViewController removeMovieNotificationObservers] in IJKMoviePlayerUplayViewController.o
"OBJC_CLASS$_IJKFFMoviePlayerController", referenced from:
objc-class-ref in IJKMoviePlayerSvodViewController.o
objc-class-ref in IJKMoviePlayerPplayViewController.o
objc-class-ref in IJKMoviePlayerUplayViewController.o
"OBJC_CLASS$_IJKFFOptions", referenced from:
objc-class-ref in IJKMoviePlayerSvodViewController.o
objc-class-ref in IJKMoviePlayerPplayViewController.o
objc-class-ref in IJKMoviePlayerUplayViewController.o
"OBJC_CLASS$_LiveVideoCoreSDK", referenced from:
objc-class-ref in LiveShowViewController.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
原因分析:
這個(gè)錯(cuò)誤的發(fā)生原因一般是“XXX”這個(gè)文件(類庫)雖然引入了工程中,但是由于種種原因(常見于多人開發(fā),svn同步不規(guī)范)導(dǎo)致“XXX”并未被添加到project.pbxproj這個(gè)文件中-或者說是項(xiàng)目路徑不對(duì),在打包階段就把三方庫和.m文件都加入到編譯文件中,如果路徑錯(cuò)誤則會(huì)導(dǎo)致編譯失敗IJKMoviePlayerSvodViewController.o就說明錯(cuò)誤是在編譯階段。
解決方法
1.缺少第三方庫中的類
在 target -> Build Phases -> Link Binary With Libraries 中添加,類所在的第三方庫。
如果存在,則很有可能是三方庫引入路徑錯(cuò)誤,解決方法刪除該三方庫,重新導(dǎo)入項(xiàng)目(注意不要直接拉入項(xiàng)目中,此方法很容易導(dǎo)致路徑問題),采用Add Files to "targe-name"的方法更加安全。
2如果是自己項(xiàng)目中的類
在targets界面中找到Build Phases,根據(jù)提示信息“XXX”來判斷缺少什么文件,一般如果缺少自定義的文件,XXX會(huì)是缺少的類名,那么就在Complie Sources中加入該文件。如果缺少類庫,則在Link Binary With Libraries中加入該類庫。