【问题标题】:libxml/tree.h no such file or directorylibxml/tree.h 没有这样的文件或目录
【发布时间】:2009-09-15 18:19:12
【问题描述】:

我收到以下错误。

libxml/tree.h 没有这样的文件或目录

我已经在我的项目中添加了libxml2.dylib,但是我遇到了这种类型的麻烦。 请帮帮我。

【问题讨论】:

  • 当你说你已经将它添加到你的项目中时,你到底做了什么?我不认为 XCode 认为它有效。
  • 如果您在 XCode 4.6 中遇到此问题,请转到此处stackoverflow.com/questions/14622684/…
  • 更新你的截图。

标签: objective-c iphone xcode libxml2


【解决方案1】:

按照“设置项目文件”下的指示 here

设置您的项目文件

您需要将 libxml2.dylib 添加到您的项目中(不要放在框架部分)。在 Mac 上, 您可以在 /usr/lib/libxml2.dylib 找到它,对于 iPhone,您将 想要 /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.0.sdk/usr/lib/libxml2.dylib 版本。

由于 libxml2 是一个 .dylib(不是一个友好的 .framework),我们仍然 还有一件事要做。转到项目构建设置 (项目->编辑项目设置->构建)并找到“搜索路径”。 在“标题搜索路径”中添加以下路径:

$(SDKROOT)/usr/include/libxml2

另见the OP's answer

【讨论】:

  • 当它要求您将“/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS2.0.sdk/usr/include/libxml2”添加到标头时,不要执行该操作搜索路径。添加 "/usr/include/libxml2 代替。这使您的项目独立于特定的 SDK。
  • 只要在/usr/include 中实际上有一个符号链接就可以了。我没有尝试安装 libxml2,所以我无法确认默认行为。但是,是的,以这种方式链接它会更好。
  • 在 XCode 下开发时,GCC 使用 -isysroot 选项重新定位 SDK 的根目录。如果在头文件搜索路径中添加 /usr/include/libxml2,它将在编译时被翻译到当前 SDK 内的 usr/include/libxml2 文件夹。
  • 当我将这个“$(SDKROOT)/usr/include/libxml2”设置为标题搜索路径(XCode 4.2)时,它说“_OBJC_METACLASS_$_UIResponder”,引用自:_OBJC_METACLASS_$ MyDemoAppDelegate.o ld 中的 _D2GAppDelegate:未找到架构 i386 的符号”。我能做什么?
  • 太棒了。谢谢。我错过了造成问题的“$(SDKROOT)”。
【解决方案2】:

在 Xcode 4.3 / 5 / 6 中添加 libxml2

添加 libxml2 是一个巨大的、肥胖的、挑剔的痛苦。如果您打算这样做,请在构建项目之前完成。


你需要通过两种方式添加它

1。目标设置

点击您的目标(不是您的项目)并选择Build Phases

点击标题为Link Binary With Libraries显示三角形。点击+添加库。

滚动到列表底部并选择libxml2.dylib。这会将 libxml2 库添加到您的项目中。

2。项目设置

现在你必须告诉你的项目在哪里寻找它三次次。

选择Build Settings tab

向下滚动到Linking 部分。 在您的项目列下双击Other Linker Flags 行。 单击+ 并将-lxml2 添加到列表中。

还有更多。

在同一选项卡中,向下滚动到 Search Paths 部分。

Framework Search Paths 行的您的项目列下添加/usr/lib/libxml2.dylib

Header Search PathsUser Header Search Paths行中添加$(SDKROOT)/usr/include/libxml2

在最后两种情况下,请确保在调试发布中输入路径。

3。清洁

Product菜单下选择Clean

然后,如果我是你(让我们面对现实,我可能是)我会退出 Xcode 并走开。当您回来并启动时,您应该一切顺利。

【讨论】:

  • 谢谢,这是唯一适用于 Xcode 4.3.3 的解决方案
  • 这些分步说明是唯一对我有用的一次(Xcode 4.4.1)。谢谢!
  • 为我工作而无需在 Xcode 4.1.1 中设置框架搜索路径
  • opening import file 'Swift.swift': Not a directory 在 Xcode 5 中执行此操作后。
  • 我还收到错误“打开模块'Swift'的导入文件:不是目录”。要解决此问题,请不要将“/usr/lib/libxml2.dylib”添加到“框架搜索路径”。在我忽略了这一步之后仍然为我工作。
【解决方案3】:

对于 Xcode 6,我必须执行以下操作:

1) 将“libxml2.dylib”库添加到我项目的 TARGET(构建阶段 -> 将二进制文件与库链接)

2) 将“$(SDKROOT)/usr/include/libxml2”添加到 TARGET 上的 Header Search Paths(构建设置 -> Header Search Paths)

在此之后,目标应该会成功构建。

【讨论】:

  • 项目设置上的 /usr/include/libxml2 不起作用的任何原因?
【解决方案4】:

您还需要将/usr/include/libxml2 添加到您的包含路径中。

【讨论】:

    【解决方案5】:

    形成@Matt Ball的链接,

    我发现以下内容对我很有帮助。

    您需要将 libxml2.dylib 添加到您的项目中(不要放在框架部分)。在 Mac 上,您可以在 /usr/lib/libxml2.dylib 找到它,而对于 iPhone,您需要 /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS2.0.sdk/usr/lib/libxml2.dylib 版本。

    由于 libxml2 是一个 .dylib(不是一个友好的 .framework),我们还有一件事要做。转到项目构建设置 (Project->Edit Project Settings->Build) 并找到“Search Paths”。在 Mac 上的“Header Search Paths”中添加以下路径:

     /usr/include/libxml2 
    

    【讨论】:

      【解决方案6】:

      Ray Wenderlich 有一篇关于使用 gdata 解决此问题的博文。基本上这些简单的步骤:

      在 XCode 中,单击 Project\Edit Project Settings 并确保选中“All Configurations”。

      找到 Search Paths\Header Search Paths 设置并将 /usr/include/libxml2 添加到列表中。

      最后,找到 Linking\Other Linker Flags 部分并将 -lxml2 添加到列表中。

      原帖:read and write xml documents with gdataxml

      【讨论】:

      • 在很多地方都找到了这个答案,但是都忘了说是项目上的Header搜索路径,不是目标上的。非常感谢您的正确解释。
      【解决方案7】:

      我发现了同样的情况,我必须为最新的 Xcode (4.3.x) 添加 $(SDKROOT)/usr/include/libxml2。此外,让我转了几个小时的原因是我正在修改“TARGET”而不是“PROJECT”(Xcode 的新 UI 非常复杂,很容易忽略这一点)。您需要修改 PROJECT!

      【讨论】:

        【解决方案8】:

        另一种解决方案。执行标题搜索路径等中的所有步骤,并确保您在项目设置中的项目中选择的配置是正确的。当您双击项目构建设置时,您可能正在更改分发设置,但您正在尝试在“调试”设置中添加标题搜索路径。因此,请确保您的设置正确。或选择所有设置

        【讨论】:

          【解决方案9】:

          我发现使用 xCode 4.3.2 我必须输入 $(SDKROOT)/usr/include/libxml2 进入标题搜索字段而不是简单地 /usr/include/libxml2

          【讨论】:

            【解决方案10】:

            从 Mavericks (OS X 10.9) 开始,/usr/include 目录消失了。这里有一半的答案已经过时,因为在您整理好包含目录之前,应用程序不会编译。

            我使用以下命令解决了在终端中创建指向 MacOSX SDK 的符号链接的问题:

            sudo ln -s /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include /usr/include
            

            应用程序现在再次编译。

            【讨论】:

            • 正是我想要的。这很完美。只需确保在标题搜索路径中放置 /usr/include/libxml2
            【解决方案11】:

            我不确定有什么区别,但将包含路径添加到项目以及目标。

            【讨论】:

              【解决方案12】:

              在 Mountain Lion 上,我遇到了同样的问题,通过添加 /usr/include/libxml2 以包含带有“递归”标志的路径,如果以上所有方法都没有结果,请使用它。

              【讨论】:

                【解决方案13】:

                我在升级到 Snow Leopard 和 XCode 3.2 后重新打开一个项目(在 XCode 3.something on Leopard 上开发)时遇到了这个问题。很好奇,它只影响了某些类型的构建(模拟器构建很好,设备给了我错误)。我在 /usr/include 有 libxml2,它确实包含 libxml/tree.h。

                即使魔法“清理”也不起作用,但是“XCode”菜单下的“空缓存...”(在 Apple 徽标和文件之间)起到了作用(那个菜单在那里在以前的版本中?)。击败我的原因,但在清理之后没有更多关于 libxml/tree.h 的投诉

                【讨论】:

                  【解决方案14】:

                  同时选择“始终搜索用户路径”为“是”。在 XCode 4.3.3 中默认为 NO

                  【讨论】:

                    【解决方案15】:

                    请按照以下步骤操作

                    1. 添加 libxml2
                      libxml2.dylib 可以在你的机器上找到 /usr/lib/libxml2.dylib

                    2. 更改“标题搜索路径”
                      单击 [项目名称](在左侧面板中)-> 项目 -> 构建设置 -> 全选(默认为基本)
                      在搜索框中输入标题搜索路径
                      双击 Header Search Paths -> + -> "$(SDKROOT)/usr/include/libxml2"

                    3. 将 -lxml2 添加到“其他链接器标志”
                      在步骤 2 中搜索“其他链接器标志”
                      单击“其他链接器标志”行。单击“+”并将“-lxml2”添加到列表中。

                    4. 将项目类型更改为 ARC -> 否,即自动引用计数更改为否 您可以按照步骤 2 搜索 ARC

                    【讨论】:

                      【解决方案16】:

                      Xcode 4.5 我已经完全使用了 CW 的解决方案。 唯一的例外是 $(SDKROOT)/usr/include/libxml2 对我不起作用,我不得不将 "$(SDK_DIR)"/usr/include/libxml2 添加到我的项目中 标题搜索路径和用户标题搜索路径。 在该项目成功构建之后。

                      编辑:我的项目中有 Google GData 项目(称为 MyProject)(我的项目使用)。 GData 需要 libxml。为了成功构建项目 MyProject,我将 "$(SDK_DIR)"/usr/include/libxml2 添加到 MyProject 的 Header Search Paths 中,而将 no 添加到 GData 的 Header Search Paths 中。如果我没有将它添加到 MyProject,则项目没有构建)。

                      【讨论】:

                        【解决方案17】:

                        我发现this visual tutorial 很有用。

                        【讨论】:

                          【解决方案18】:

                          块引用 在 Xcode 4.3.x 中添加 libxml2

                          添加 libxml2 是一个巨大的、肥胖的、挑剔的痛苦。如果您打算这样做,请在构建项目之前完成它。

                          方法如下。

                          目标设置

                          单击您的目标(不是您的项目)并选择“构建阶段”。单击标题为“Link Binary With Libraries”的显示三角形。单击“+”以添加库。滚动到列表底部并选择“libxml2.dylib”。这会将 libxml2 库 2 添加到您的项目中……但请稍等。

                          项目设置

                          现在你必须再告诉你的项目在哪里寻找它三遍。

                          选择“构建设置”选项卡。向下滚动到“链接”部分。在您的项目的列下,双击“Other Linker Flags”行。单击“+”并将“-lxml2”添加到列表中。

                          还有更多。

                          在同一选项卡中,向下滚动到“搜索路径”部分。在“框架搜索路径”行中的项目列下添加“/usr/lib/libxml2.dylib”。

                          在“标头搜索路径”和“用户标头搜索路径”行中添加“$(SDKROOT)/usr/include/libxml2”。在最后两种情况下,请确保在 Debug AND Release 中输入路径。

                          那么。在“产品”菜单下选择“清洁”。

                          这对 Xcode5 也有效!谢谢!

                          【讨论】:

                          • 这在 Xcode 5.0.2 中不起作用。我对我的项目进行了上述更改,但没有运气。你能帮我做些什么吗?
                          【解决方案19】:

                          不要将 libxml2.dylib 放在 frameworks 文件夹下,放在根目录下的根目录下(左上角蓝色图标)

                          然后点击项目(左上角蓝色图标),转到构建设置,在搜索框中输入“标题搜索路径”,然后添加这个“$(SDKROOT)/usr/include/libxml2”

                          这段代码解决了我的问题,希望它能帮助你解决这个问题

                          【讨论】:

                            【解决方案20】:

                            @Aqib Mumtaz - 我按照 Parris 上面题为“在 Xcode 4.3 / 5 / 6 中添加 libxml2”的说明中的说明使其工作。使用框架搜索路径的步骤不起作用,编译器会抱怨。无论如何都要向那个家伙致敬!

                            我正在使用 Xcode 6.2b3

                            无论您使用的是什么版本的 Xcode,它都是错误的。不要总是假设编译错误是真实的。很多时候它不遵循标题搜索路径并且未找到明确列出的包含。更糟糕的是,由此产生的错误往往会将您指向不同的方向,因此您会浪费大量时间来分心。话虽如此...

                            从这个开始推荐婴儿步骤...:

                            1. 创建一个名为“Bench Test”的单窗口 Mac OS X Cocoa 项目
                            2. 直接在 Finder 中将 XpathQuery 添加到项目源目录中
                            3. 点击项目窗口红色关闭按钮下的小文件夹图标
                            4. 将 XpathQuery(如果包含它,则为文件夹)拖到项目窗口显示左侧的项目资产中
                            5. 将 /Applications/Xcode/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/usr/lib/libxml2.2.dylib 拖到您的项目资源中,在底部.这会将它添加到您的“构建阶段”->“将二进制文件与库链接”中
                            6. 点击左上方项目资产列中的“基准测试”项目图标
                            7. 在“构建设置”下搜索“其他链接器标志”
                            8. 在“基准测试”项目图标列下的“其他链接器标志”中添加“-lxml2”(无“”)
                            9. 在“构建设置”下搜索“标题搜索”
                            10. 在“Bench Test”项目图标列下的“Header Search Paths”中添加“$(SDKROOT)/usr/include/libxml2”(sans "")
                            11. 在“Bench Test”项目图标列下的“User Header Search Paths”中添加“$(SDKROOT)/usr/include/libxml2”(sans "")

                            注意事项:

                            • 在我将该搜索路径添加到“标题搜索路径”和“用户标题搜索路径”之前,我的方法无法正常工作。
                            • 要在查找器中访问 libxml2.2.dylib,您需要右键单击 Xcode 图标并选择“显示包联系人”(社论:真是个 hack.. 将所有垃圾塞进应用程序)李>
                            • 准备更改链接的 libxml2.2.dylib。 Xcode 中的 是有意使用的,以确保 Xcode 得到它知道的东西,并且在理论上已经过测试。您可能希望稍后在系统中使用 dylib(在此线程中阅读)
                            • 由于我使用的是 Xcode 6.2b3,我可能有一个更新的 libxml2.2.dylib。您的名称可能略有不同。只需在文件夹中搜索以“libxml”开头并以“.dylib”结尾的内容即可。也可能有一个别名,如“libxml2.dylib”。不要立即使用它,因为解析别名会将另一个变量添加到 Xcode“可能有错误”等式中。
                            • 出于理智的考虑,我为外部库设置了别名,重命名它们以指示它们是哪一个,并将它们与 Finder 中的项目文件保持在同一级别。如果他们更改位置、更改名称等,别名将包含在 Get Info 中,即原始文件的完整路径,供以后的侦探工作以再次编译和链接项目。 (符号链接太容易断了,对 Mac 来说不自然)
                            • 最后一点,非常重要,请参阅 http://www.cocoawithlove.com/2008/10/using-libxml2-for-parsing-and-xpath.html,您可以在其中下载 XpathQuery 并获得更多好处。

                            希望这会有所帮助。

                            如果您碰巧正在为退伍军人开发一些东西,比如说 iPhone / iPad 或 Mac 应用程序,并且正在使用一种名为“MDWS”或“VIA”的东西,它们是医疗记录系统的基于 SOAP 的接口......请联系我

                            【讨论】:

                              【解决方案21】:

                              我在Xcode 8.0 + 单元测试项目中分三步解决

                              1) 我将 libxml 文件添加到 Build Phases.follow this link

                              2) 我将 Other Linker Flags 添加为 -ObjC(对于项目和测试项目目标)

                              3) 我将 Header Search Path 设置为 "${SDKROOT}/usr/include/libxml2"(不要忘记在两边加上双引号)(对于项目和测试项目目标)

                              其中一个将解决问题。如果不是,您必须应用上述所有三个。

                              【讨论】:

                                【解决方案22】:

                                我坚持我添加错误,然后我意识到问题是它不支持弧,所以在这里检查支持,救命 -> http://www.michaelbabiy.com/arc-compliant-gdataxml-library/

                                【讨论】:

                                  猜你喜欢
                                  • 2014-12-09
                                  • 1970-01-01
                                  • 1970-01-01
                                  • 1970-01-01
                                  • 1970-01-01
                                  • 2021-06-24
                                  • 2015-02-20
                                  • 1970-01-01
                                  相关资源
                                  最近更新 更多