在Xcode 4.2中找不到'libxml/xmlversion.h'文件?

24

我正在将Twitter应用程序集成到我的应用程序中,我的应用程序是使用ARC创建的xcode 4.2。当我使用此代码实现Twitter代码时,在我下载并运行此项目时它可以正常工作。但是当我将这个Twitter SDK代码集成到我的基于xcode 4.2的应用程序中时,出现了'libxml/xmlreader.h'文件未找到的错误。我已经通过改变头文件解决了这个问题:#include <libxml2/libxml/xmlreader.h>,但更改后又出现了新的错误:'libxml/xmlversion.h'文件未找到。我尝试更改xmlreader.h文件的头文件,但是这个文件是不可编辑的。我也更改了此文件的权限,但是仍然无法解决问题。我已经按照以下格式改变了头文件: #include <libxml2/libxml/xmlreader.h>,但它仍然无法工作。

请告诉我如何解决这个错误。

我在stackoverflow上看到了几个类似的问题

但是它们对我在xcode 4.2上没有用。请指导我。


我以为是ARC错误,所以我也禁用了ARC然后尝试了一下,但它没有起作用。还有一个问题,有时我的应用程序在启用ARC的情况下收到内存警告,那么我该怎么办? - Hrushikesh Betai
关于 ARC 问题,这是一个独立的问题,应该提出一个单独的问题。 - mmmmmm
不,我是在询问Xcode运行编译代码的命令。 - mmmmmm
抱歉,我不知道如何查看这个?你能更具体一些吗? - Hrushikesh Betai
让我们在聊天中继续这个讨论:http://chat.stackoverflow.com/rooms/6691/discussion-between-hrushikesh-and-mark - Hrushikesh Betai
显示剩余4条评论
9个回答

29
你需要将所有的libxml头文件加到包含路径中。对于Xcode,可以通过在搜索路径中添加/usr/include/libxml2来实现(这会将-I/usr/include/libxml2传递给C编译器)。
在构建设置选项卡的搜索路径中,选择“头文件搜索路径”(Header Search Paths),如下图所示:

enter image description here


谢谢,但我已经在Stack Overflow上阅读了这个答案,并且我也尝试过像这样的方法,但对我来说没有用。有点像这样 #include </usr/include/libxml2/libxml/xmlreader.h> - Hrushikesh Betai
那不行,因为它不能获取所有的文件。你找到了什么答案? - mmmmmm
2
谢谢你提供的图片信息,但我已经尝试过这样做了,但它给出了与我所问问题相同的错误。 - Hrushikesh Betai
1
添加 ${SDK_DIR}/usr/include/libxml2。 - beryllium

27

对我来说可以工作。 记得在目标项目的“链接二进制文件”和“构建阶段”部分中添加库。 图片2 图片1


我需要添加头文件搜索路径。 - Jared Egan

25

前往"项目" -> "构建设置",搜索"用户头文件搜索路径"键并添加以下值:

"${SDK_DIR}"/usr/include/libxml2

在我的Xcode 4.5 + iOS 6环境中,这个方法非常有效。


1
这也比其他解决方案更好,因为它正确地使用了Xcode SDK中的包含文件,而不是系统头文件。 - Mike Weller

3

我和你遇到了相同的问题。对于我来说,问题在于我在项目构建设置中设置了“Header Search Path”,但是我的目标构建设置覆盖了该设置。我通过将$(inherited)行添加到目标构建设置的头文件搜索路径中来解决了这个问题。


3

如果您正在使用CocoaPods并遇到此错误,则必须fork该规范并将以下行添加到其中:

s.libraries = 'xml2'
s.xcconfig = { 'HEADER_SEARCH_PATHS' => '$(SDKROOT)/usr/include/libxml2' }

你需要移除Pod,然后重新安装并将podspec指向你的分支。之所以要fork Pod是因为CocoaPods在执行pod install时会生成Target,而在这里更改不起作用。
请注意,如果该Pod依赖其他库,请在s.libraries行中包含它们。
关于此修复的来源,请参考CocoaPods问题“Pod Integration Issues”中的链接

2

0
在XCode 5中:
  1. 将"${SDK_DIR}"/usr/include/libxml2添加到您的头文件搜索路径
  2. 在构建阶段添加libxml2.dylib

0

在添加“Header Search Paths”键时,请确保使用非递归选项。

/usr/include/libxml2 -- 这是非递归选项

/usr/include/libxml2\** -- 这是递归选项,会


0
将头文件搜索路径添加为$(SDKROOT)/usr/include/libxml2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接