Probleme mit den Includes



  • Hallo,
    ich probiere nun aufgrund einiger Fehlversuche mit anderen IDEs Visual Studio aus. Seit geraumer Zeit versuche ich nun schon diverse Manipulationen mit libxml2 an einem XML-Dokument vorzunehmen bisher leider ohne Erfolg...Mal gibt es hier ein Problem mal dort. Ich hoffe das es mit VS un etwas leichter wird.

    Nun habe ich aber das Problem, dass immer wieder folgender Fehler kommt:

    Deleting intermediate files and output files for project 'Testprogramm - Win32 Debug'.
    --------------------Configuration: Testprogramm - Win32 Debug--------------------
    Compiling...
    StdAfx.cpp
    Compiling...
    Testprogramm.cpp
    c:\programme\microsoft visual studio\myprojects\testprogramm\libxml\xmlmemory.h(16) : fatal error C1083: Cannot open include file: 'libxml/xmlversion.h': No such file or directory
    Error executing cl.exe.

    Testprogramm.exe - 1 error(s), 0 warning(s)

    Problem ist, dass die Headerdatei auf jeden fall in
    c:\programme\microsoft visual studio\myprojects\testprogramm\libxml\
    ...zu finden ist.

    So sieht der Code aus:

    // Testprogramm.cpp : Defines the entry point for the console application.
    //
    
    #include "stdafx.h"
    #include "stdio.h"
    #include "string.h"
    #include "stdlib.h"
    #include "libxml/xmlmemory.h"
    #include "libxml/parser.h"
    
    void parseStory (xmlDocPtr doc, xmlNodePtr cur) {
    
    	xmlChar *key;
    	 cur = cur->xmlChildrenNode;
    
    	 while (cur != NULL) {
    
    		    key = xmlNodeListGetString(doc, cur->xmlChildrenNode, 1);  
    			if(key!=NULL){
    				printf("%s\n", key);
    			}
    		    xmlFree(key);
    
    	cur = cur->next;
    	}
        return;
    }
    
    static void parseDoc(char *docname) {
    
    	xmlDocPtr doc;
    	xmlNodePtr cur;
    
    	doc = xmlParseFile(docname);
    
    	if (doc == NULL ) {
    		fprintf(stderr,"Document not parsed successfully. \n");
    		return;
    	}
    
    	cur = xmlDocGetRootElement(doc);
    
    	if (cur == NULL) {
    		fprintf(stderr,"empty document\n");
    		xmlFreeDoc(doc);
    		return;
    	}
    
    	if (xmlStrcmp(cur->name, (const xmlChar *) "YMResult")) {
    		fprintf(stderr,"document of the wrong type, root node != story");
    		xmlFreeDoc(doc);
    		return;
    	}
    
    	cur = cur->xmlChildrenNode;
    	while (cur != NULL) {
    
    			parseStory (doc, cur);
    
    	cur = cur->next;
    	}
    
    	xmlFreeDoc(doc);
    	return;
    }
    
    void getReference (xmlDocPtr doc, xmlNodePtr cur) {
    
    	xmlChar *uri;
    	cur = cur->xmlChildrenNode;
    	while (cur != NULL) {
    	    if ((!xmlStrcmp(cur->name, (const xmlChar *)"NavItm"))) {
    		    uri = xmlGetProp(cur, (const xmlChar *)"uri");
    		    printf("uri: %s\n", uri);
    		    xmlFree(uri);
    	    }
    	    cur = cur->next;
    	}
    	return;
    }
    
    int main(int argc, char **argv) {
    
    	char *docname ="result.xml";
    	parseDoc(docname);
    
    system("PAUSE");
    
    	return (1);
    }
    

    Die Headerfiles die benötigt werden liegen alle im Verzeichnis libxml im Projektordner.

    Kann es sein, dass man noch irgendwo in VS Einstellungen vornehmen muss, damit er sie findet?

    Habe die beiden Header Parser.h und xmlmemory.h über Project -> Add to Project -> File hinzugefügt.

    Vielen Dank für Eure Hilfe



  • Vielleicht fehlt c:\programme\microsoft visual studio\myprojects\testprogramm\libxml\ bei den Include-Verzeichnissen?



  • Wenn du einen relativen Pfad angibst, sucht der Compiler afaik ausgehend von dem Verzeichnis, in dem die aktuell bearbeitete Datei steht. Das heißt, in der "xmlmemory.h" versuchst du die "c:\programme\microsoft visual studio\myprojects\testprogramm\libxml\libxml\xmlversion.h" einzubinden, die allerdings nicht existiert.


Anmelden zum Antworten