我在本機iOS應用程序(一堆.a庫)中使用第三方框架。我的應用程序是使用XCode 5 SDK SDK 7.0開發的。當部署目標爲7.0時,架構錯誤的未定義符號
當部署目標爲6.1(庫和標頭搜索路徑很好)時,庫編譯並鏈接正常。但是,當我改變了部署目標爲7.0,我得到下面的連接錯誤:
Undefined symbols for architecture i386:
"std::string::find_last_of(char const*, unsigned long) const", referenced from:
GetExecutionDir(ECTemplateString<char>&, char*, bool) in myLibrary.a(moPlatForm.o)
"std::string::find(char const*, unsigned long) const", referenced from:
ParseLog(std::string const&, unsigned int&, CmoDateTime&, int&, std::string&) in myLibrary.a(AppLog.o)
"std::string::size() const", referenced from:
mo::CmoParam::WriteToStream(void*, mo::STREAM_STATE*) in myLibrary.a(moParams.o)
"std::string::c_str() const", referenced from:
GetExecutionDir(ECTemplateString<char>&, char*, bool) in myLibrary.a(moPlatForm.o)
CMocaFileTransfer::UpdateParamsForGetTraceFiles(mo::CmoParamList&, long) in myLibrary.a(RobieFileTransfer.o)
CMocaFileTransfer::AddTraceFileForUpload(std::string const&, std::string const&) in myLibrary.a(RobieFileTransfer.o)
CMocaFileTransfer::CreateParamsForSendTraceFiles(mo::CmoObject&) in myLibrary.a(RobieFileTransfer.o)
mo::CmoParam::WriteToStream(void*, mo::STREAM_STATE*) in myLibrary.a(moParams.o)
ParseLog(std::string const&, unsigned int&, CmoDateTime&, int&, std::string&) in myLibrary.a(AppLog.o)
CAppLog::LogExists(unsigned int) in myLibrary.a(AppLog.o)
...
圖書館是有點老了,我不知道是否有兼容性問題。我不打算支持iOS 6,所以我需要將部署目標設置爲7.0。任何形式的幫助/指導都會很棒。
任何理由爲什麼這些越來越編譯的i386?我猜你需要從目標版本設置中刪除i386,所以只有armv7和armv7s在那裏。 – Justin
我曾嘗試玩過架構。我不認爲這是一個架構問題。順便說一句,圖書館只支持armv7,所以armv7s是不可能的。 – Guven
我聽到雅,但在錯誤的頂部它說架構i386。顯然它不支持這一點:-) – Justin