Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xcode/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 使用嵌套库创建Cocoa Touch框架时发生链接错误_Ios_Xcode_Frameworks - Fatal编程技术网

Ios 使用嵌套库创建Cocoa Touch框架时发生链接错误

Ios 使用嵌套库创建Cocoa Touch框架时发生链接错误,ios,xcode,frameworks,Ios,Xcode,Frameworks,我在创建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(a

我在创建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

这些库都列在目标>常规>链接框架和库中。 标题被正确包含

编译和链接的相同文件在另一个(普通应用程序、非库)项目中正确执行


我尝试添加一个pch,同时添加所有必需的库,但没有任何更改。

动态库仅适用于ios 8。如果需要在项目中使用动态库,请在常规选项卡中添加链接框架和库嵌入二进制文件。这将是一项工作

您可以更改静态库而不是动态库。构建设置->Mach-O->静态库,以及将部署目标更改为iOS 7.0。在您的框架中完成这两项更改后,将在iOS 7.0及更高版本上进行工作

下面是在Xcode 6中创建静态cocoa touch框架的步骤

打开Xcode并通过单击File\new\project并选择iOS\framework和Library\framework创建一个新的静态框架项目

命名产品框架名称并将项目保存到空目录中

自动为我们的框架创建伞头。在这个标题中,您应该使用像#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架构构建,从而允许应用程序在大多数设备上运行

马赫数设置:静态库:

最终建造项目:

单击(您可以获得更多详细信息。)

聚合目标,使用lipo将设备和模拟器框架结合起来

lipo“${SIMULATOR_LIBRARY_PATH}/${FRAMEWORK_NAME}”${DEVICE_LIBRARY_PATH}/${FRAMEWORK_NAME}”-创建-输出“${FRAMEWORK}/${FRAMEWORK_NAME}”


单击“您已获得创建通用框架的步骤”

这些框架是否链接到库的目标中?您好,是(请看问题的最后三行)。谢谢谢谢,因为我当时怀疑原因是ios7上支持动态库。