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
undSystem.hpp
. In der .cpp Datei wird dann nochSysUtils.hpp
inkludiert. Dazu kommen noch einige eigene Headerdateien, deren .cpp Dateien einzeln aber übersetzt werden. Dieshlobj.h
wird dabei nicht explizit inkludiert.
Ich habe dann angefangen, die Reihenfolge der Header zu tauschen und andere Header zu inkludieren (zBshlobj.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.