Konvertierung eines Projektes (Fehler in einer C++-Datei)



  • Hallo

    Beim Konvertieren eines Projekts von VS2003 nach Visual Studio 2005 habe ich einen Fehler in einer C++-Datei erhalten der mich etwas überfordert.

    Anscheinend wird das Schlüsselwort __value in VS2005 mißbilligt! wie kann ich die enumeration:

    __value enum message
    {
    WMU_SART = (0x0400+100),
    WMU_ST,
    WMU_D,
    WMU_IN,
    WMU_RAWDR,
    WMU_RAWDT,
    };

    so gestalten, das sie von der IDE akzeptiert wird?
    Oder vielleich die Aufrufende Funktion umgestalten um das Problem zu lösen.

    Fehlermeldung:

    Fehler 8 error C3821: "WMU_IN": Ein verwalteter Typ oder eine verwaltete Funktion kann nicht in einer nicht verwalteten Funktion verwendet werden.

    In einer Funktion wird ein Mitglied der Enum. so verarbeitet:

    void CBaseProt::errMess(int i_messageType, const char *szformat, ...)
    {
    SdTToM(WMU_IN, tmpBuf, strlen(tmpBuf));
    }

    😮

    TomDuell



  • Ich glaube, __value ist Managed C++ (C++/CLI). Kann es sein, dass du versuchst, managed code in einer unmanaged Anwendung unterzubringen?

    EDIT: Die Frage gehört dann auch eher ins C++/CLI-Board...



  • Ja, das was du schreibst ist alles richtig! Habe auch schon überlegt in welchem Forum das wohl am besten aufgehoben wäre! Aber einen Lösungsvorschlag hast du nicht? 😞

    Naja, vielleicht kann mir jemand eine elegante Lösung dieses Problems aufzeigen. DANKE

    😕

    TomDuell



  • Schreib einfach:

    enum message
    {
    WMU_SART = (0x0400+100),
    WMU_ST,
    WMU_D,
    WMU_IN,
    WMU_RAWDR,
    WMU_RAWDT,
    };
    


  • simon.gysi schrieb:

    Schreib einfach:

    enum message
    {
    WMU_SART = (0x0400+100),
    WMU_ST,
    WMU_D,
    WMU_IN,
    WMU_RAWDR,
    WMU_RAWDT,
    };
    

    Also ich hab ja keine Ahnung von diesem managed-Kram, aber wird es nicht an tausend weiteren Stellen krachen, wenn er jetzt versucht, seinen managed Code mit solchen Maßnahmen ("__value stört, also raus!") in ein unmanaged Projekt zu zwängen? Sollte er dann nicht lieber sein Projekt korrekt als managed Code einstellen (wie auch immer das geht)?



  • Eure vorschläge habe ich leider schon ausprobiert, dann bekomme ich aber den Fehler:

    error C3277: Eine nicht verwaltete Enumeration 'IntfRemote::CIntfRemote::message' kann nicht innerhalb einer verwalteten 'IntfRemote::CIntfRemote' definiert werden

    aber trotzdem danke für eure Bemühungen!!

    TomDuell



  • Also ich hab ja keine Ahnung von diesem managed-Kram, aber wird es nicht an tausend weiteren Stellen krachen, wenn er jetzt versucht, seinen managed Code mit solchen Maßnahmen ("__value stört, also raus!") in ein unmanaged Projekt zu zwängen? Sollte er dann nicht lieber sein Projekt korrekt als managed Code einstellen (wie auch immer das geht)?

    Kann sein, dass dieser enum an andere Stelle managed verwendet wird.
    Das ist genau der Grund warum ich sage, mann solle entweder managed oder unmanaged code schreiben und nur an wenig deifnierten stellen die conversion vorzunehmen.

    Es gibt leute die merken nicht mal wenn sie c und c++ oder C++ und C++/cli mischen.
    Ist halt einfach nicht für Anfänger geeignet eine Sprache wie C++/CLI zu lernen.

    Offensichtlich ist in seinem Projekt ein mix aus managed / unmanaged code.
    Das würde ich zuerst beheben.



  • Es gibt leute die merken nicht mal wenn sie c und c++ oder C++ und C++/cli mischen. Ist halt einfach nicht für Anfänger geeignet eine Sprache wie C++/CLI zu lernen.

    Also diesen Kommentar kannst du dir sparen!! Es gibt halt auch Leute die Projekte übernehmen müssen die lange Jahre von anderen Personen betreut wurden!! In meinem Fall besteht der Quellcode aus VB-Modulen, C#-Modulen, C++-Sourcen von einer Partnerfirma, und eingebundenen Treiber-Interfaces.

    Ich hatte gehofft mir kann jemand eine schnelle und einfache Möglichkeit aufzeigen solche Probleme zu lösen, aber anscheinend werden solche Foren auch immer wieder gerne für unnötige Beleidigungen und belangloses Geschwafel mißbraucht!

    😡

    TomDuell



  • Er hat dir doch geholfen, soweit es ihm mit deinem Mini-Codeschnipsel möglich war. Dein Post hat den Anschein erweckt, als versuchtest du, alten managed-Kram in ein VS2005-C++-Projekt zu packen. Er hat dir gezeigt, wie die Deklaration der Enumeration dann auszusehen hat. Mehr Hilfe war aufgrund der spärlichen Informationen sicher nicht möglich. Außerdem bist du im falschen Board (lass dich nach C++/CLI verschieben).

    Und beleidigend ist er auch nicht geworden. Er hat lediglich gesagt, wie es ist. Du hast ja selbst gesagt, dass du momentan mit der Situation (verständlicherweise) etwas überfordert bist und seine deutliche Aussage könnte dich ja zum Beispiel anspornen, bei Kollegen, die sich besser mit C++/CLI im Speziellen auskennen, Hilfe zu erbitten o.ä.


Anmelden zum Antworten