我通常使用 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/
我在项目属性中输入了以下路径:
项目 > 属性 > C/C++->常规 > 其他包含目录
—workspace\libxml\libxml2-2.7.8.win32\libxml2-2.7.8.win32\包括
项目 > 属性 > 链接器 > 常规 > 其他库目录
—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,对吗?
最佳答案
设置搜索路径时...
1) 对于编译,将有 3 个搜索路径,每个路径都以 include 结尾。
2) 对于库,将有 3 个搜索路径,每个路径都以 lib 结尾。
所以主要问题是 *.h 文件的路径需要扩展以包含所有三个路径。
库的路径需要扩展为包含所有三个路径,并且这些路径需要以包含库的目录结束,而不是包含头文件的目录。
关于c - 为什么 Visual Studio 2015 找不到 libxml2 的文件依赖项 iconv.h?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36189416/