我坚持创建一个Cocoa Touch框架
收到此错误
Undefined symbols for architecture armv7:
"_AVMediaTypeVideo", referenced from:
_avf_read_header in libavdevice.a(avfoundation.o)
"_AVMediaTypeMuxed", referenced from:
_avf_read_header in libavdevice.a(avfoundation.o)
"_OBJC_CLASS_$_AVCaptureDeviceInput", referenced from:
objc-class-ref in libavdevice.a(avfoundation.o)
"_CMSampleBufferGetImageBuffer", referenced from:
_avf_read_header in libavdevice.a(avfoundation.o)
_avf_read_packet in libavdevice.a(avfoundation.o)
"_OBJC_CLASS_$_AVCaptureSession", referenced from:
objc-class-ref in libavdevice.a(avfoundation.o)
...
"_LoggerAudio", referenced from:
-[KxMovieDecoder setSelectedAudioStream:] in KxMovieDecoder.o
-[KxMovieDecoder openAudioStream:] in KxMovieDecoder.o
-[KxMovieDecoder handleAudioFrame] in KxMovieDecoder.o
-[KxMovieDecoder decodeFrames:] in KxMovieDecoder.o
ld: symbol(s) not found for architecture armv7
clang: error: linker command failed with exit code 1 (use -v to see invocation)
在项目中,我使用了其他几个系统dylib和框架以及其他手动添加的静态库及其相关标头。
该项目仅适用于ios8,非64。
这些库都列在Target>中。一般>链接的框架和库。 标题包含正确。
编译和链接的相同文件在另一个(普通应用程序,非库)项目中正确执行
我尝试添加一个pch,同时添加了所有必需的库,没有任何改变。
答案 0 :(得分:2)
动态库仅适用于ios 8.如果需要在项目中使用动态库,请在链接框架和库和嵌入式二进制文件中添加框架strong>常规选项卡。它将起作用。
您可以更改静态库而不是动态库。构建设置 - > Mach-O - >静态库,以及将部署目标更改为iOS 7.0。更改后,这两个在您的框架中完成的工作是在iOS 7.0及更高版本上工作。
这里步骤在Xcode 6中创建静态可可触摸框架。
打开Xcode并通过单击File \ New \ Project并选择iOS \ Framework和Library \ Cocoa Touch框架来创建一个新的静态框架项目。
将产品命名为FrameWorkName,并将项目保存到空目录。
为我们的框架创建自动伞形头。在此标头中,您应使用#import
等语句导入框架的所有公共标头静态框架项目由头文件和实现文件组成,这些文件被编译为构建框架本身。您可以使用Cocoa Touch类创建类。
验证您的构建设置转到项目目标的构建设置并确认或将“体系结构”设置为“标准体系结构”。这些是arm64和armv7,可能是默认设置。同样,我们还需要在设置中设置一些架构,因为iOS应用程序需要在许多不同的架构上运行。
armv7:用于最旧的iOS 7支持设备 armv7s:用于iPhone 5和5C arm64:适用于iPhone 5S中的64位ARM处理器 i386:适用于32位模拟器 x86_64:用于64位模拟器
这意味着构建速度尽可能快。当您归档应用程序或以发布模式构建时,Xcode将为所有ARM体系结构构建,从而允许该应用程序在大多数设备上运行。
Mach-O设置:静态库:
Final Build项目:
点击here(您有更多详情。)
使用lipo
聚合目标以组合设备和模拟器框架lipo" $ {SIMULATOR_LIBRARY_PATH} / $ {FRAMEWORK_NAME}" " $ {DEVICE_LIBRARY_PATH} / $ {FRAMEWORK_NAME}" -create -output" $ {FRAMEWORK} / $ {FRAMEWORK_NAME}" |回声
点击here您已获得创建通用框架的步骤