MSXML und Turbo c++ USING NAMESPACE Fehler



  • Hallo zusammen,

    ich möchte den MSXML6 Parser in meiner C++ Anwendung verwenden.

    Folgendes habe ich versucht :

    #include <vcl.h>
    #pragma hdrstop
    
    #include "Unit3.h"
    #include "msxml6.h"
    
    using namespace MSXML;
    

    Der Turbo C++ Compiler meldet jedoch einen Fehler bei der "using namespace MSXML6;" deklaration. Es ist egal ob ich MSXML,MSXML2 usw... verwende, er beschwert sich mit "[C++ Fehler] Unit3.cpp(9): E2282 Name eines Namensbereichs erwartet"

    Das versteh ich absolut garnicht und bin mit meinem Latain am ende. Habe schon sehr vielfältig gegoogelt aber scheinbar ist das nicht mein Tag...

    Über Hilfe würde ich mich sehr freuen,

    Stefan



  • Hallo,

    Der Name deines Namensbereiches stimmt halt nicht. Schau doch einfach mal in die msxml6.h rein wie der Namensbereich wirklich heißt.



  • Hallo, und erstmal danke für deine Antwort.

    Ich habe folgendes in MSXML6.h gefunden :

    #ifdef __USE_MSXML6_NAMESPACE__
    namespace MSXML6 {
    #endif
    

    Mit "using namespace MSXML6;" kommt jedoch der gleich Fehler.

    Habe auch mal einen #define __USE_MSXML6_NAMESPACE__ 1 am Anfang der Headerdatei gemacht. Nützt alles nicht. Dieses Turbo C++ tut sich echt schwer mit der MSXML. Es gibt halt auch keinerlei Hilfe im Netz. BEispiele gibts für Visual C++ reichlich. Das ganze geht schwer an die nerven...

    Aber danke nochmal



  • Dann lass doch das using namspace einfach weg. Du brauchst es doch eigentlich nicht.
    Der TurboC++ hat keinerlei Probleme mit Namspaces. Wahrscheinlich ist eben das erwähnte define nicht gesetzt, so dass die lib keinen Namespace verwendet.
    Es könnte natürlich durchaus sein, dass dieses MSXML außerhalb eines MS-Compilers gar nicht läuft.



  • So nun hab ich die Lösung für mein Problem.

    #ifndef __USE_MSXML2_NAMESPACE__
    #define __USE_MSXML2_NAMESPACE__ 1
    #endif  __USE_MSXML2_NAMESPACE__
    

    Ist zwar nirgens so definiert aber muss so sein. In der msxml2.h,msxml4.h,msxml6.h usw... wird der Namespace nur definiert wenn die __USE_MSXML2_NAMESPACE__ definiert wurde.

    #ifdef __USE_MSXML6_NAMESPACE__
    namespace MSXML6 {
    ....
    

    Ich weiß nicht ob das im VisualStudio automatisch geschieht aber ich finde das ganze schon sehr umständlich bzw. irreführend.



  • Der Namensraum ist nun ok aber die LIB ist nicht richtig eingebunden. Das heißt, absturz während der Laufzeit. Also wenn jemand weiß, wie die LIBs in Turbo c++ eingebunden werden wäre ich über Hilfe dankbar.



  • Hallo

    Das ist nicht der richtige Zusammenhang. Wenn wirklich die Lib nicht nicht richtig eingebunden wäre, würde der Linker zur Compile-Time meckern und dein Programm gar nicht erst starten.
    Probleme zur Laufzeit sind Implementationsfehler. Benutzt den Debugger um die Konkrete Stelle zu finden und verfolge wichtige Variablen.

    bis bald
    akari


Anmelden zum Antworten