Einbinden von GDI+ bringt Fehler



  • Hallo,

    wenn ich die GDIplus header einbinde bekomme ich diese Fehler;

    [BCC32 Fehler] GdiplusMetaHeader.h(62): E2015 Mehrdeutigkeit zwischen 'INT16' und 'Igdiplus::INT16'
      Vollständiger Parser-Kontext
        Unit2.cpp(7): #include c:\programme\embarcadero\rad studio\7.0\include\gdiplus.h
        gdiplus.h(40): namespace Gdiplus
        gdiplus.h(53): #include c:\programme\embarcadero\rad studio\7.0\include\GdiplusMetaHeader.h
        GdiplusMetaHeader.h(61): class
    

    was kann ich dageben machen!?

    Danke



  • Kann ich nicht reproduzieren.

    Bitte lauffähiges, vollständiges Minimalbeispiel posten.



  • Da gibts kein beispiel.

    Ich erstelle ein neues Projekt, binde als header die gdiplus.h ein, kompiliere und schon bekomme ich die Fehler.



  • Ähhmm ja,

    Tut mir leid wenn ich diese Header nicht kenne.
    Welche Befehle enthalten sie und gibt es nicht ein Kongruenter Header für den BCB. 😕



  • JBOpael schrieb:

    wenn ich die GDIplus header einbinde

    Mehrere? Welche? Probiers erstmal nur mit einem:

    #include <gdiplus.h>
    

    Welche BCB-Version hast du?
    edit rad studio 7.0 😉



  • JBOpael schrieb:

    ... binde als header die gdiplus.h ein...

    in c++ sprache enspricht das

    #include <gdiplus.h>
    

    Oder muss ich noch was einbinden um GDI+ zu verwenden.



  • Ein GDI+ Setup muss gemacht werden. Beim BCB2009 reichen diese Zeilen.

    // in *.h:
    private:
    	Gdiplus::GdiplusStartupInput gdiplusStartupInput;
    	ULONG_PTR  gdiplusToken;
    
    // in *.cpp:
    
    #define STRICT
    #include <gdiplus.h>
    
    using namespace Gdiplus;
    
    __fastcall TForm1::TForm1(TComponent* Owner)
    	: TForm(Owner)
    {
       GdiplusStartup(&gdiplusToken, &gdiplusStartupInput, NULL);
    }
    
    __fastcall TForm1::~TForm1(void)
    {
       Gdiplus::GdiplusShutdown(gdiplusToken);	
    }
    
    // später
    
    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
    	Gdiplus::Graphics graphics(Image1->Canvas->Handle); 
    	//Load the image from a file
    	Gdiplus::Image image(L"example01.gif");
    	graphics.DrawImage(&image, 0, 0, image.GetWidth(), image.GetHeight());
    }
    //---------------------------------------------------------------------------
    

    mfg
    kpeter



  • kpeter schrieb:

    #define STRICT

    Das gehört eher in die Projektoptionen.



  • audacia schrieb:

    kpeter schrieb:

    #define STRICT

    Das gehört eher in die Projektoptionen.

    Klar. 😉
    Momentan komm ich nicht auf den embarcadero-Link zum Thema STRICT und VCL-Komponenten...



  • das hab ich auch gelesen und ausprobiert, aber das hat doch nichts mit der mehrdeutigkeit von UINT16 zu tuen, oder?!



  • JBOpael schrieb:

    Da gibts kein beispiel.

    Ich erstelle ein neues Projekt, binde als header die gdiplus.h ein, kompiliere und schon bekomme ich die Fehler.

    So einfach kanns nicht sein.

    Schuß ins Blaue: du verwendest IGDI+ und bindest es kurz davor ein. Lösung ist, IGDI+ nicht zu benutzen (in C++Builder ist es ohnehin einigermaßen überflüssig) oder aber gdiplus.h davor einzubinden.


Anmelden zum Antworten