RAD Studio 10.1 Berlin: WinAPI.ShlObj.hpp unbekannter Typname



  • Ich versuche grad eigene Units zu übersetzen und laufe bei einer in folgende Fehlermeldungen:

    bcc32c.exe schrieb:

    [bcc32c Fehler] Winapi.ShlObj.hpp(598): unbekannter Typname '_tagCOMPSTATEINFO'
    [bcc32c Fehler] Winapi.ShlObj.hpp(600): unbekannter Typname '_tagCOMPSTATEINFO'
    [bcc32c Fehler] Winapi.ShlObj.hpp(602): unbekannter Typname '_tagIE4COMPONENT'
    [bcc32c Fehler] Winapi.ShlObj.hpp(604): unbekannter Typname '_tagIE4COMPONENT'
    [bcc32c Fehler] Winapi.ShlObj.hpp(606): unbekannter Typname '_tagCOMPONENT'
    [bcc32c Fehler] Winapi.ShlObj.hpp(608): unbekannter Typname '_tagCOMPONENT'

    Der Compiler versucht hier einen typedef auf Strukturen anzulegen, die in der Windows Headerdatei shlobj.h definiert werden. Lustigerweise nur diese 3 Strukturen, alle anderen im Definitionsblock sind wohl bekannt.

    Ein Tipp aus dem Embarcadero Forum ist, für das Projekt das Symbol NO_WIN32_LEAN_AND_MEAN zu setzen, aber das löst das Problem auch nicht. Ich habe jetzt diverse Header Dateien (windows.h, shlapi.h, shlobj.h, wininet.h, div. Embarcadero Header) in allen möglichen Kombinationen und Reihenfolge inkludiert, ohne das Problem lösen zu können.
    Hat jemand eine Idee?



  • An welcher Stelle inkludierst Du die shlobj.hpp? So weit ich mich erinnere muss die vor irgendwelchem VCL-Kram inkludiert werden. In meinem (uralten) BCB6 erfüllt das #define NO_WIN32_LEAN_AND_MEAN dann aber auch seinen Zweck. Weitere includes sind nicht notwendig.



  • Nirgendwo und überall 😉

    Ich kann mir das überhaupt nicht erklären. In der .h Datei inkludiere ich windows.h und System.hpp . In der .cpp Datei wird dann noch SysUtils.hpp inkludiert. Dazu kommen noch einige eigene Headerdateien, deren .cpp Dateien einzeln aber übersetzt werden. Die shlobj.h wird dabei nicht explizit inkludiert.
    Ich habe dann angefangen, die Reihenfolge der Header zu tauschen und andere Header zu inkludieren (zB shlobj.h , WinAPI.ShlObh.hpp und andere), aber keine Kombination hat den Fehler behoben.



  • Hallo,
    nutzt Du den Clang Compiler?. Probiere mal den "alten" Borland Compiler.

    Gruß



  • Ne, deswegen wollen wir ja auf den 10.1.


Anmelden zum Antworten