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

时间:2009-09-15 18:19:12

标签: objective-c iphone xcode libxml2

我遇到了以下错误。

  

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

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

22 个答案:

答案 0 :(得分:213)

按照“设置项目文件”中的说明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

答案 1 :(得分:86)

在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 Paths User Header Search Paths行添加$(SDKROOT)/usr/include/libxml2

在最后两种情况下,请确保在Debug Release中输入路径。

3。清洁

Product菜单下选择Clean

然后,如果我是你(让我们面对它,我可能是)我会退出Xcode然后走开。当你回来发射时,你应该很高兴。

答案 2 :(得分:22)

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

1)添加" libxml2.dylib"库到我项目的目标(构建阶段 - >链接二进制文件库)

2)添加" $(SDKROOT)/ usr / include / libxml2"到TARGET上的标题搜索路径(构建设置 - >标题搜索路径)

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

答案 3 :(得分:19)

您还需要在包含路径中添加/usr/include/libxml2

答案 4 :(得分:11)

形成@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上添加以下路径:

 /usr/include/libxml2 

答案 5 :(得分:11)

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

答案 6 :(得分:7)

我发现相同,我必须为最新的Xcode(4.3.x)添加$(SDKROOT)/ usr / include / libxml2。另外,让我绕圈数小时的事实是我正在修改“TARGET”而不是“PROJECT”(Xcode的新UI非常复杂,很容易被忽视)。你需要修改PROJECT!

答案 7 :(得分:5)

答案 8 :(得分:4)

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

答案 9 :(得分:4)

截至Mavericks(OS X 10.9),/ usr / include目录已消失。这里的答案中有一半是过时的,因为在您整理include目录之前,应用程序不会编译。

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

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

应用程序现在再次编译。

答案 10 :(得分:3)

我不确定区别是什么,只是添加项目的目标路径和目标。

答案 11 :(得分:3)

在Mountain Lion上我遇到了同样的问题,通过添加/usr/include/libxml2以包含带有“递归”标志的路径来解决这个问题,如果以上所有内容都不富有成效,请使用此方法。

答案 12 :(得分:2)

请按照以下步骤

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

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

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

  4. 将您的项目类型更改为ARC - >没有,即自动参考计数为否 您可以按照步骤2

  5. 搜索ARC

答案 13 :(得分:2)

我发现this visual tutorial很有用。

答案 14 :(得分:2)

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

编辑:我的项目中有一个Google GData项目(名为MyProject)(我的项目使用)。 GData需要libxml。为了成功构建项目MyProject,我将“$(SDK_DIR)”/ usr / include / libxml2添加到MyProject的标题搜索路径,而不添加到GData的标题搜索路径。如果我没有将它添加到MyProject,项目没有构建)。

答案 15 :(得分:2)

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

答案 16 :(得分:2)

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

即使是神奇的“清洁”也无法正常工作,“空缓存......”在“XCode”菜单下(Apple徽标和文件之间)完成了伎俩(就是那里的菜单)在以前的版本?)。打败我的原因,但在干净后,没有关于libxml / tree.h的投诉

答案 17 :(得分:1)

  

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

添加libxml2是一个巨大,肥胖,挑剔的痛苦。如果您打算在构建项目之前做得太多,那就去做吧。

这是怎么做的。

目标设置

单击您的目标(而不是您的项目)并选择“Build Phases”。单击标题为“Link Binary With Libraries”的显示三角形。单击“+”以添加库。滚动到列表底部,然后选择“libxml2.dylib”。这会将libxml2库2添加到您的项目中......但是等等。

项目设置

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

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

还有更多。

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

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

然后。在“产品”菜单下选择“清洁”。

这也适用于Xcode5!谢谢!

答案 18 :(得分:1)

不要把libxml2.dylib放在frameworks文件夹下,把它放在root下面的root下面(左上角的蓝色图标)

然后点击项目(TOP左侧蓝色图标),转到Build Settings,在搜索框中输入&#34; Header Search Paths&#34;然后添加这个&#34; $(SDKROOT)/ usr / include / libxml2&#34;

此代码解决了我的问题,希望它可以帮助您解决此问题

答案 19 :(得分:1)

@Aqib Mumtaz - 我按照Parris上面标题为“在Xcode 4.3 / 5/6中添加libxml2”的说明进行操作。使用框架搜索路径的步骤不起作用,编译器会抱怨。无论如何,对那个家伙来说真是太棒了!

我正在使用Xcode 6.2b3

无论您使用的Xcode版本如何,它都是错误的。不要总是认为编译错误是真实的。很多时候,它不遵循标题搜索路径,并且包括清楚列出的未找到。更糟糕的是,导致的错误往往会指向不同的方向,因此您会浪费大量时间来分散注意力。随着那说......

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

  1. 创建一个名为“Bench Test”的单一窗口Mac OS X Cocoa项目
  2. 直接在Finder
  3. 中将XpathQuery添加到项目源目录中
  4. 点击项目窗口红色关闭按钮下的小文件夹图标
  5. 将XpathQuery(如果包含它的文件夹)拖到项目窗口显示屏左侧的项目资源中
  6. 将/Applications/Xcode/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/usr/lib/libxml2.2.dylib拖到您项目资产的底部。这会将它添加到您的“构建阶段” - &gt; “Link Binary with Libraries”简单方法
  7. 点击项目资源栏中的“Bench Test”项目图标,左上方
  8. 在“Build Settings”下搜索“Other Linker Flags”
  9. 在“Bench Test”项目图标栏下添加“-lxml2”(无“”)到“其他链接标志”
  10. 在“Build Settings”下搜索“header search”
  11. 将“$(SDKROOT)/ usr / include / libxml2”(无“”)添加到“Bench Test”项目图标列下的“Header Search Paths”
  12. 在“Bench Test”项目图标列下添加“$(SDKROOT)/ usr / include / libxml2”(无“”)到“用户标题搜索路径”
  13. 注意:

    • 在我将搜索路径添加到“页眉搜索路径”和“用户页眉搜索路径”之后,我的工作无效。
    • 要在finder中找到libxml2.2.dylib,您需要右键单击Xco​​de图标并选择“Show Package Contacts”(编辑:什么是黑客......将所有垃圾塞入应用程序)
    • 准备好更改链接的libxml2.2.dylib。 Xcode中的一个 是故意用来确保Xcode得到它所知道的东西并且在理论上已经过测试。您可能希望稍后在系统中使用dylib(在此主题中阅读)
    • 当我使用Xcode 6.2b3时,我可能有一个更新的libxml2.2.dylib。你的名字可能略有不同。只需在文件夹中搜索以“libxml”开头并以“.dylib”结尾的内容即可。可能还有一个别名,如“libxml2.dylib”。不要立即使用它,因为解析别名会在Xcode中添加另一个变量“可能有什么错误”等式。
    • 为了理智,我创建外部库的别名,重命名它们以指示它们是哪一个,并将它们保持在与Finder中的项目文件相同的级别。如果他们更改位置,更改名称等,别名将在其中获取“获取信息”,原始文件的完整路径供以后的侦探工作用于再次进行项目编译和链接。 (符号链接破坏太容易了,对Mac来说并不自然)
    • 最后,非常重要的是,请参阅http://www.cocoawithlove.com/2008/10/using-libxml2-for-parsing-and-xpath.html,您可以从中下载XpathQuery并获得更多优惠。
    希望这会有所帮助。

    如果你正在为退伍军人开发一些东西,哦说一个iPhone / iPad或Mac应用程序,并且正在反对称为“MDWS”或“VIA”的东西,它们是基于SOAP的医疗记录系统接口......请联系我

答案 20 :(得分:0)

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

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

2)我将其他链接标记添加为-ObjC(适用于项目和测试项目目标)

3)我将标题搜索路径设置为"${SDKROOT}/usr/include/libxml2"(不要忘记任何一方的双引号)(对于项目和测试项目目标)

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

答案 21 :(得分:0)

我认为我添加错误,然后我意识到问题是它不支持弧,所以检查这里的支持,生命保护 - &gt; http://www.michaelbabiy.com/arc-compliant-gdataxml-library/