MIDL Frage



  • Hallo Forum,

    ich versuche eine COM DLL zu erstellen. Ich habe ein Interface für Klasse A erstellt und B. In B möchte ich nun eine Property erstellen wo ein Objekt von Typ A übergeben wird. Der Kompiler meldet:
    T:\New\TestPrj.idl(18) : error MIDL2025 : syntax error : expecting a type specification near "ClassA"

    Der Code:

    interface ClassB : IDispatch
    {
    [propget, id(1), helpstring("property A")] HRESULT Head([out, retval] ClassA *pVal);
    [propput, id(1), helpstring("property A")] HRESULT Head([in] ClassA newVal);
    };

    Was muß ich machen damit ich ein Objekt vom Typ ClassA über die Schnittstelle von ClassB schicken kann?

    Vielen Dank

    Martin



  • Ich hätte es jetzt eher so definiert:

    interface ClassB : IDispatch 
    { 
    [propget, id(1), helpstring("property A")] HRESULT Head([out, retval] ClassA **ppVal); 
    [propput, id(1), helpstring("property A")] HRESULT Head([in] ClassA *newVal); 
    };
    


  • Ok, aber der Fehler sagt doch aus das der Compiler ClassA nicht kennt? (Bin gerade zuhause und habe das Projekt nicht hier.)



  • Wo hast Du denn die ClassA deklariert? davor oder danach?



  • Kann ich erst morgen sagen bzw. ich werde sie morgen vertauschen.
    Wen nes aber auf die Reihenfolge ankäme, könnte ich dann ClassA kein Objekt mehr von ClassB übergeben.

    Wenn ich #include "ClassA.h" schreibe kriege ich jede Menge Fehlermeldungen. Unter anderem das das Keywort class nicht erkannt wurde. Irgendwo im Inet stand das IDL so wie C sei, also keine Klassen kennen würde. Ich habe mir einige Beispiel idl Dateien angesehen, da waren eine Menge structs drinn ich konnte aber keine Klassen finden. Werden Klassenobjekte vielleicht irgendwie anders übertragen?



  • Ich habe ein Testprojekt erstellt. Von der Reichenfolge scheint es nicht abzuhängen:
    http://freenet-homepage.de/kuh_an_wand/



  • Hat sich erledigt. Es kommt doch auf die Reihenfolge an. Ausserdem werden die Interfaces bei der Übergabe benutzt und nicht die Klassen.


Anmelden zum Antworten