Ein Namespace-Problem also!
Deine Bezeichner beißen sich mit den Delphi eigenen Headern im
Winapi-Namespace.
Um es zu kompilieren, musste ich neben der Wincodec.pas noch die DXGI.pas und D2D1.pas umbenennen.
Zwar löst die
IDE richtig zu deinen Headern auf, aber der Compiler denkt bei einen nacktem "D2D1" in der uses-Klausel wohl zuerst an "
Winapi.D2D1".
Kann Free Pascal auch diese Pseudo-Namespaces mit Punkt in der
Unit?
Vielleicht führst du deine eigenen Namespaces ein, damit das nicht kollidiert?