【发布时间】:2016-03-23 21:53:39
【问题描述】:
我通常使用 PHP 编写代码,并且是 Visual Studio 和 C 的新手,我按照此处的步骤 — http://www.codeguru.com/cpp/data/data-misc/xml/article.php/c14893/Libxml2-Everything-You-Need-in-an-XML-Library.htm 并下载了三个文件 — libxml、iconv、zlib。它说,iconv 和 zlib 是 libxml2 的依赖项。
我的代码如下:
#include <stdio.h>
#include <libxml/parser.h>
#include <libxml/tree.h>
static void print_element_names(xmlNode * a_node)
{
xmlNode *cur_node = NULL;
for (cur_node = a_node; cur_node; cur_node = cur_node->next) {
if (cur_node->type == XML_ELEMENT_NODE) {
printf("node type: Element, name: %s\n",
cur_node->name);
}
print_element_names(cur_node->children);
}
}
int main(int argc, char **argv)
{
xmlDoc *doc = NULL;
xmlNode *root_element = NULL;
if (argc != 2) return(1);
LIBXML_TEST_VERSION // Macro to check API for match with
// the DLL we are using
/*parse the file and get the DOM */
if (doc = xmlReadFile("http://www.w3schools.com/xml/note.xml", NULL, 0)) == NULL){
printf("error: could not parse file %s\n", argv[1]);
exit(-1);
}
/*Get the root element node */
root_element = xmlDocGetRootElement(doc);
print_element_names(root_element);
xmlFreeDoc(doc); // free document
xmlCleanupParser(); // Free globals
return 0;
}
在我下载的包中,我有文件夹——iconv-1.9.2.win32、libxml2-2.7.8.win32、zlib-1.2.5.win32。 [所有这些文件夹都在workspace\libxml文件夹中并排放置]
我从上面下载的——ftp://ftp.zlatkovic.com/libxml/
我在项目属性中输入了以下路径:
Project > Properties > C/C++->General > Additional Include Directories—workspace\libxml\libxml2-2.7.8.win32\libxml2-2.7.8.win32\includeProject > Properties > Linker > General > Additional Library Directories—workspace\libxml\iconv-1.9.2.win32\iconv-1.9.2.win32\include
我不知道将zlib 文件夹路径放在哪里。 (第一个问题)
我在 Visual Studio Professional 2015(Windows 8、64 位)中构建了解决方案,并得到以下错误:
无法打开源文件“iconv.h”
C1083 无法打开包含文件:'iconv.h':没有这样的文件或目录
GTK:我创建了:文件 > 项目 > VC++ > 空项目
我的问题是:
我应该把三个文件夹的具体路径放在哪里(从下载的包中)?
我必须创建独立的应用程序,所以我必须静态链接 libxml2 Dll,我这样做对吗?
【问题讨论】:
-
使用
#include "file"而不是#include <file>。如果您还不了解基础知识,切勿从空项目开始。 -
@HansPassant 我尝试了你的建议,没有任何区别。问题不是
#include语句,问题必须在Project Properties及其路径中,因为它无法找到位于#included文件中的一个文件中的文件iconv.h -
“iconv.h”在哪里?尝试使用 Windows Search 进行搜索。您可能需要将此路径“workspace\libxml\iconv-1.9.2.win32\iconv-1.9.2.win32\include”添加到其他头文件中。附加库是放置各种 *.lib 文件路径的地方。
-
设置搜索路径时... 1) 对于编译,将有 3 个搜索路径,每个路径都以
include结尾。 2) 对于库,将有 3 个搜索路径,每个路径都以lib结尾。所以主要问题是 *.h 文件的路径需要扩展为具有所有三个路径。库的路径需要扩展为具有所有三个路径,并且这些路径需要以包含库的目录结束,而不是包含头文件的目录。 -
@user3629249 我按照您的建议进行了操作,并且奏效了。我从来不知道我们可以设置多条路径。提到的错误已经消失,现在我还有其他新错误,但我会处理它们。感谢您的回答,您可以将其作为答案,我会接受的。
标签: c visual-studio-2015 libxml2 iconv