問題就解決了。
我使用的XCode 5.0.2和iOS 7.當過我編譯靜態庫,Xcode的說,它是建立一個通用的庫(但實際上不是)。 'Products'目錄顯示libxyz.a(它位於iphoneos /目錄中) - 這實際上是針對ARM設備的ARM6 & ARM7。所以,當我把這個'libxyz.a'文件並在另一個項目中使用它,鏈接器用來拋出警告'缺少所需的架構i386'。
我按照http://www.raywenderlich.com/41377/creating-a-static-library-in-ios-tutorial
使用的腳本來生成含有兩個模擬器& iphone設備二進制單一的二進制。
# define output folder environment variable
UNIVERSAL_OUTPUTFOLDER=${BUILD_DIR}/${CONFIGURATION}-universal
# Step 1. Build Device and Simulator versions
xcodebuild -target ImageFilters ONLY_ACTIVE_ARCH=NO -configuration ${CONFIGURATION} -sdk iphoneos BUILD_DIR="${BUILD_DIR}" BUILD_ROOT="${BUILD_ROOT}"
xcodebuild -target ImageFilters -configuration ${CONFIGURATION} -sdk iphonesimulator -arch i386 BUILD_DIR="${BUILD_DIR}" BUILD_ROOT="${BUILD_ROOT}"
# make sure the output directory exists
mkdir -p "${UNIVERSAL_OUTPUTFOLDER}"
# Step 2. Create universal binary file using lipo
lipo -create -output "${UNIVERSAL_OUTPUTFOLDER}/lib${PROJECT_NAME}.a" "${BUILD_DIR}/${CONFIGURATION}-iphoneos/lib${PROJECT_NAME}.a" "${BUILD_DIR}/${CONFIGURATION}-iphonesimulator/lib${PROJECT_NAME}.a"
# Last touch. copy the header files. Just for convenience
cp -R "${BUILD_DIR}/${CONFIGURATION}-iphoneos/include" "${UNIVERSAL_OUTPUTFOLDER}/"
雖然我不確定你指的是哪個庫,但有一些庫文件可能沒有i386體系結構(模擬器)。在設備上試用。 – Raptor
我已經創建了我自己的靜態庫。當靜態庫項目被添加爲依賴項目並且靜態庫(.a)被添加到主應用程序時,靜態庫的工作沒有問題。但是,當我嘗試改變主appliation的位置時,Xcode開始抱怨(.a)中靜態庫丟失i386架構:( – user2863876