c - 为什么 Visual Studio 2015 找不到 libxml2 的文件依赖项 iconv.h?

标签 c visual-studio-2015 libxml2 iconv

我通常使用 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/

我在项目属性中输入了以下路径:

  1. 项目 > 属性 > C/C++->常规 > 其他包含目录workspace\libxml\libxml2-2.7.8.win32\libxml2-2.7.8.win32\包括

  2. 项目 > 属性 > 链接器 > 常规 > 其他库目录workspace\libxml\iconv-1.9.2.win32\iconv-1.9.2.win32\include

我不知道将 zlib 文件夹路径放在哪里。 (第一个问题) 我在 Visual Studio Professional 2015(Windows 8,64 位)中构建了解决方案,但出现以下错误:

  1. 无法打开源文件“iconv.h”

  2. C1083 无法打开包含文件:“iconv.h”:没有此类文件或目录

GTK:我创建了:文件 > 项目 > VC++ > 空项目

我的问题是:

  1. 我应该把这三个文件夹(从下载的包中)的具体路径放在哪里?

  2. 我必须创建独立应用程序,因此我必须静态链接 libxml2 Dll,对吗?

最佳答案

设置搜索路径时...

1) 对于编译,将有 3 个搜索路径,每个路径都以 include 结尾。

2) 对于库,将有 3 个搜索路径,每个路径都以 lib 结尾。

所以主要问题是 *.h 文件的路径需要扩展以包含所有三个路径。

库的路径需要扩展为包含所有三个路径,并且这些路径需要以包含库的目录结束,而不是包含头文件的目录。

关于c - 为什么 Visual Studio 2015 找不到 libxml2 的文件依赖项 iconv.h?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36189416/

相关文章:

在 C 中更改/转换 xmlChar 的类型

c++ - pow(x, 0.5f) 的快速实现是否比快速 sqrt(x) 更快?

c - 这个通用函数有什么作用?

c++ - 使用imencode()时访问冲突读取位置

javascript - 无法在 VS 2015 中的 Windows 通用应用程序 (Javascript) 中运行 T4 模板

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

python - 在给定时间/样本量下,频率 f1 和 f2 之间呈指数变化的正弦波

c - 链表代码中的插入操作不起作用

visual-studio - 在Visual Studio 2015上找不到控制台应用程序

c - 使用 C 从 XML 文件读取数据