Projekt von C++ Borland 6 nach Embarcadero Rad Studio 10.1 Berlin emigrieren



  • Hallo Zusammen
    ich habe ein Projekt, das in C++ Borland 6 implementiert wurde .
    und ich möchte es zu Embarcadero Rad Studio 10.1 Berlin emigrieren.
    leider bekomme ich folgenden Fehler.
    könnte jemand verlicht mir helfen?
    dank schön☺

    [[bcc32 Fehler] Winapi.IpExport.hpp(32): E2257 , erwartet

      Vollständiger Parser-Kontext
        Engine.cpp(11): #include c:\program files (x86)\embarcadero\studio\18.0\include\windows\vcl\vcl.h
        vcl.h(10): #include c:\program files (x86)\embarcadero\studio\18.0\include\windows\vcl\basepch0.h
        basepch0.h(76): #include c:\program files (x86)\embarcadero\studio\18.0\include\windows\vcl\Vcl.Forms.hpp
        Vcl.Forms.hpp(32): #include c:\program files (x86)\embarcadero\studio\18.0\include\windows\rtl\System.Win.TaskbarCore.hpp
        System.Win.TaskbarCore.hpp(20): #include c:\program files (x86)\embarcadero\studio\18.0\include\windows\rtl\System.Win.Taskbar.hpp
        System.Win.Taskbar.hpp(20): #include c:\program files (x86)\embarcadero\studio\18.0\include\windows\rtl\Winapi.ShlObj.hpp
        Winapi.ShlObj.hpp(20): #include c:\program files (x86)\embarcadero\studio\18.0\include\windows\rtl\Winapi.ShellAPI.hpp
        Winapi.ShellAPI.hpp(19): #include c:\program files (x86)\embarcadero\studio\18.0\include\windows\rtl\Winapi.IpExport.hpp
        Winapi.IpExport.hpp(27): namespace Winapi
        Winapi.IpExport.hpp(29): namespace Ipexport~~~~~~~~

  • Mod

    Für alle, die so verwirrt sind wie ich: Die Fehlermeldung "E2257 , erwartet" ist zu lesen als "E2257: Komma erwartet".

    Das ist natürlich ein ganz schön langer Kontext, aber da ich mal davon ausgehen würde, dass die Winapi Header wahrscheinlich richtig sind, liegt der Fehler höchstwahrscheinlich in deinem Code, nämlich direkt bevor die große Include-Orgie losgeht. Wahrscheinlich fehlt da ein }, ;, , oder ähnliches in deinem Code, und dann kommt ein #include und sorgt dafür, dass der Kontext in der Fehlermeldung so aufgebläht wird.



  • So was Ähnliches hatten wir glaube ich auch mal. Das Problem war, dass irgendwo ein #define genauso hieß, wie der Name eines Parameters in einer Funktionssignatur, beides Out-of-the-box der Embarcadero Installation.
    Irgendwo in einer .h oder .hpp Datei der mitgelieferten Dateien gab es

    #define M1 <keine Ahnung mehr was>
    

    und in einer anderen

    void IrgendEineFunktion( double M1 );
    

    Je nach dem, in welcher Reihenfolge die Header inkludiert werden, war M1 entweder unbesetzt und der Parametername gültig oder der Präprozessor hat M1 ersetzt und dann stolpert der Compiler über eine seltsame Funktionssignatur. Das gab´s in mehreren Fällen, wir haben da einfach den Parameternamen umbenannt und dann ging´s wieder.


Anmelden zum Antworten