2016-03-23 7 views
0

Ich Code normalerweise in PHP, und neu in Visual Studio und C, ich folgte den Schritten hier - http://www.codeguru.com/cpp/data/data-misc/xml/article.php/c14893/Libxml2-Everything-You-Need-in-an-XML-Library.htm und heruntergeladen drei Dateien - libxml, iconv, zlib. Es besagt, dass iconv und zlib Abhängigkeiten für libxml2 sind.Warum konnte Visual Studio 2015 iconv.h nicht finden, eine Dateiabhängigkeit von libxml2?

Mein Code ist unten:

#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; 
    } 

In meinem heruntergeladene Paket, ich habe Ordner - iconv-1.9.2.win32, libxml2-2.7.8.win32, zlib-1.2.5.win32. [Alle diese Ordner Seite innerhalb workspace\libxml Ordner einander liegen]

ich oben hier heruntergeladen - ftp://ftp.zlatkovic.com/libxml/

Ich trat in den folgenden Pfad in den Projekteigenschaften:

  1. Project > Properties > C/C++->General > Additional Include Directories - workspace\libxml\libxml2-2.7.8.win32\libxml2-2.7.8.win32\include

  2. - workspace\libxml\iconv-1.9.2.win32\iconv-1.9.2.win32\include

Ich habe keine Ahnung, wohin zlib Ordner Pfad setzen. (Erste Frage) ich die Lösung in Visual Studio Professional 2015 (Windows 8, 64 Bit) gebaut und bekam folgende Fehler:

  1. kann nicht Open-Source-Datei "iconv.h"

  2. C1083 kann nicht offen Include-Datei: 'iconv.h': Keine solche Datei oder das Verzeichnis

GTK: ich erstellt: Datei> Projekt> VC++> Leeres Projekt

Mein que sind:

  1. Wo sollte ich, welchen spezifischen Pfad aus allen drei Ordnern (aus dem heruntergeladenen Paket)?

  2. Ich muss eigenständige Anwendung erstellen, also muss ich die libxml2 Dll statisch verknüpfen, gehe ich richtig?

+0

Verwenden Sie '#include" file "' anstelle von '#include '. Beginnen Sie nie mit einem leeren Projekt, wenn Sie die Grundlagen noch nicht kennen. –

+0

@HansPassant Ich habe versucht, was Sie vorgeschlagen, das machte keinen Unterschied. Das Problem ist nicht '# include' Anweisungen, das Problem muss in' Projekteigenschaften' und seinem Pfad liegen, da es nicht in der Lage ist, die Datei 'iconv.h' zu finden, die in einer der Dateien in' # included' Datei –

+0

liegt Wo befindet sich "iconv.h"? Versuchen Sie, mit Windows Search danach zu suchen. Sie müssen diesen Pfad "workspace \ libxml \ iconv-1.9.2.win32 \ iconv-1.9.2.win32 \ include" wahrscheinlich zu Ihren zusätzlichen Header-Dateien hinzufügen. In den zusätzlichen Bibliotheken fügen Sie die Pfade zu verschiedenen * .lib-Dateien hinzu. – thurizas

Antwort

0

wenn die Suchpfade Einrichtung ...

1) für die Kompilierungen, wird es 3 Suchpfade werden, dass jedes Ende in einschließen.

2) Für die Bibliotheken gibt es 3 Suchpfade, die jeweils in lib enden.

Also das Hauptproblem ist, dass die Pfade zu den * .h-Dateien erweitert werden müssen, um alle drei Pfade zu haben.

Die Pfade zu den Bibliotheken müssen erweitert werden, um alle drei Pfade zu haben UND diese Pfade müssen in den Verzeichnissen enden, die die Bibliotheken enthalten, nicht in den Verzeichnissen, die die Header-Dateien enthalten.