Objective c iOS:编译静态库

Objective c iOS:编译静态库,objective-c,xcode,static-libraries,test-project,Objective C,Xcode,Static Libraries,Test Project,我正试图构建我的第一个静态库,但我遇到了编译问题。我的意思是,我可以编译我的库,而且一切看起来都很好,但是当我设置一个测试项目来测试它时,我遇到了这样的错误: ld:警告:忽略文件 /用户/*/Desktop/TestApp/LibProva/LibProva.a,文件是为 非链接体系结构的存档(i386) 架构i386的未定义符号: “_OBJC_CLASS_$_Prova”,引用自: AppDelegate.o中的objc类引用 ld:未找到架构i386的符号 叮当声:错误:链接器命令失败,

我正试图构建我的第一个静态库,但我遇到了编译问题。我的意思是,我可以编译我的库,而且一切看起来都很好,但是当我设置一个测试项目来测试它时,我遇到了这样的错误:

ld:警告:忽略文件 /用户/*/Desktop/TestApp/LibProva/LibProva.a,文件是为 非链接体系结构的存档(i386) 架构i386的未定义符号: “_OBJC_CLASS_$_Prova”,引用自: AppDelegate.o中的objc类引用 ld:未找到架构i386的符号 叮当声:错误:链接器命令失败,退出代码为1(使用-v查看调用)

ld:警告:忽略文件 /Users/**/Desktop/TestApp/LibProva/LibProva.a,文件是为 非链接体系结构的存档(i386)


所以我猜编译是有问题的(由于模拟器和设备中的架构不同),但我无法找到正确的方法。有人能告诉我如何解决这个问题吗?

您必须使用lipo创建通用二进制文件:

#!/bin/bash
#build the device
echo building for ARM architecture
xcodebuild -sdk iphoneos4.3 "ARCHS=armv6 armv7" build > /dev/null
#build the simulator
echo building for the i386 architecture
xcodebuild -sdk iphonesimulator4.3 "ARCHS=i386 x86_64" "VALID_ARCHS=i386 x86_64" build > /dev/null
#make the folder
mkdir "Fat Binary"
#lipo suck it together
echo lipo binaries together
lipo -output Fat\ Binary/libmylib.a  -create build/Release-iphoneos/libprefuse_visual_iOS.a build/Release-iphonesimulator/libmylib.a
echo lipo binary saved at $./Fat Binary/libmylib.a
echo copying headers
cp -R build/Release-iphoneos/usr "Fat Binary"
echo [COMPLETE]
请确保用
xcodebuild
生成的
.a
的实际名称替换
libmylib.a
的实例