100

我收到以下错误。

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

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

4

22 回答 22

214

按照此处的说明,在“设置您的项目文件”下。

设置项目文件

您需要将 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

另请参阅OP 的答案

于 2009-09-15T18:21:50.467 回答
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.

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

3.清洁

Product菜单下选择Clean

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

于 2012-06-05T20:14:02.093 回答
22

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

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

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

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

于 2014-09-12T18:16:42.370 回答
19

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

于 2009-09-15T18:23:54.737 回答
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 
于 2009-09-15T18:24:45.580 回答
11

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

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

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

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

原帖:用gdataxml读写xml文档

于 2011-02-02T02:31:43.867 回答
7

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

于 2012-04-27T21:59:44.940 回答
5

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

于 2010-07-25T15:04:43.687 回答
4

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

于 2012-04-08T21:15:20.597 回答
4

从 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

应用程序现在再次编译。

于 2013-11-13T10:19:54.670 回答
3

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

于 2011-01-29T06:38:00.177 回答
3

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

于 2013-01-21T11:04:05.440 回答
2

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

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

于 2009-11-30T14:11:55.723 回答
2

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

于 2012-06-24T05:32:49.380 回答
2

请按照以下步骤

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

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

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

  4. 将您的项目类型更改为 ARC -> No ie Automatic Reference Counting 为 No 您可以按照步骤 2 搜索 ARC

于 2012-07-04T09:28:39.473 回答
2

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,则项目没有构建)。

于 2012-10-01T09:11:12.270 回答
2

我发现这个视觉教程很有用。

于 2012-11-01T22:34:36.500 回答
1

Blockquote 在 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 也有效!谢谢!

于 2013-10-13T12:46:57.417 回答
1

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

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

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

于 2014-03-13T07:46:08.813 回答
1

@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 的接口......请联系我

于 2015-01-04T14:15:08.387 回答
0

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

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

2)我添加了其他链接器标志-ObjC对于项目和测试项目目标)

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

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

于 2016-12-08T06:05:41.353 回答
0

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

于 2017-06-08T16:17:40.893 回答