C++ XCode3-库搜索路径和项目框架之间的关系

C++ XCode3-库搜索路径和项目框架之间的关系,c++,xcode,xcode3.2,C++,Xcode,Xcode3.2,作为一名来自VS的新MAc开发人员,我并不真正“了解”什么是框架。如果我在我的项目中添加了一个框架,这是否自动意味着在我执行#include时应该找到标题 我似乎发现在某些情况下,我还必须添加标题搜索路径。这是否意味着框架工作不正常?如果框架编写正确,它将包含标题以及实际的可链接(二进制)文件。编译器(以前是GCC,最近是LLVM-clang)识别框架路径并自动知道在哪里搜索框架头。但也有一些极端情况: 如果不添加框架,而是从/usr/lib添加传统的Unix库(libsqlite3.dylib

作为一名来自VS的新MAc开发人员,我并不真正“了解”什么是框架。如果我在我的项目中添加了一个框架,这是否自动意味着在我执行
#include
时应该找到标题


我似乎发现在某些情况下,我还必须添加标题搜索路径。这是否意味着框架工作不正常?

如果框架编写正确,它将包含标题以及实际的可链接(二进制)文件。编译器(以前是GCC,最近是LLVM-clang)识别框架路径并自动知道在哪里搜索框架头。但也有一些极端情况:

  • 如果不添加框架,而是从/usr/lib添加传统的Unix库(libsqlite3.dylib、libxml2.dylib等)。那么可能是库有一个单独的(非标准的)包含路径;例如,在油嘴滑舌的情况下,这是很常见的。在这种情况下,必须将/usr/include/glib-2.0添加到标题搜索路径中
  • 相反的情况:当您遇到一些“伞形”框架(例如,核心音频被分割成小的子框架,如AudioToolbox.framework等),那么该特定框架不包含可链接的动态库,只包含头
  • 我希望这会有所帮助。

    如以下定义:

    框架是一个分层目录,它封装了共享的 资源,如动态共享库、nib文件、图像文件、, 中的本地化字符串、头文件和参考文档 单包

    换句话说,它是可由一个或多个应用程序使用的资源的汇编,而不是应用程序本身

    详情如下:

    您可以使用
    #include
    指令。如果您在Objective-C中工作,您可以使用
    #导入
    指令,而不是
    #包含
    指令。两个 指令具有相同的基本结果。但是
    #import
    指令 保证同一头文件不会包含多次。 包含框架头有两种方式:

    #include <Framework_name/Header_filename.h>
    #import <Framework_name/Header_filename.h>
    
    #包括
    #进口
    
    在这两种情况下,Framework\u name是框架的名称,而 Header\u filename是该框架或其子框架中的头文件的名称

    在包含框架头文件时,传统的做法是包含 只有主框架头文件。主头文件是 名称与框架名称匹配的头文件。例如 通讯簿框架有一个名为
    AddressBook.h

    要包含自定义框架,请执行以下操作:

    如果您的项目链接到未包含在任何 对于标准位置,必须明确指定 在Xcode能够找到它的头文件之前,这个框架。指明 在这样一个框架的位置,添加包含 框架到框架。Xcode将此目录列表传递给编译器并 链接器,两者都使用该列表来搜索框架资源