Guid in C++?



  • Hallo,

    ich schreibe gerade eine COM-dll und muss sie dementsprechend für die Ziel-Anwendung per Guid erkennbar machen. Für die Klasse selber habe ich das schon gemacht

    [Guid("{xxxxxxxx}")]
    class meineKlasse
    {
      // Klasse...
    }
    

    Jetzt muss ich laut Doku noch eine Guid für die Assembly vergeben. Wie geht das in C++? Ich kenne das nur für C#, da lautet das

    [assembly: ComVisible(true)]
    // The following GUID is for the ID of the typelib if this project is exposed to COM
    [assembly: Guid("yyyyyyyyyyy")]
    

    geschrieben in der Datei AssemblyInfo.cs

    Aber wo muss ich welchen Code in C++ eintragen? Per google finde ich nur Infos, wie ich die Guid selber erstellen kann, aber das brauche ich ja nicht, weil ich das vom Visual Studio machen lasse.



  • C++ hat keine Assemblies... (es sei denn, du schreibst C++/CLI, wovon abzuraten ist).

    Dein Beispiel:

    [Guid("{xxxxxxxx}")]
    class meineKlasse
    {
      // Klasse...
    }
    

    ist übrigens auch kein richtiges C++...

    Vielleicht solltest du dir das mal anschauen:
    http://stackoverflow.com/questions/2938435/comc-programming-tutorials



  • Dieser Thread wurde von Moderator/in pumuckl aus dem Forum C++ (auch C++0x und C++11) in das Forum C++/CLI mit .NET verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Nun bist Du in das C++/CLI Forum verschoben worden. Als erstes wäre nun zu klären ob Du deine COM DLL in C++/CLI schreiben möchtest oder ob Du native C++ bevorzugst.

    Ich würde zu letzterem raten oder gleich C#.

    Ich vermute, pumuckl hat dich ein wenig voreilig hierhin verschoben.



  • Nein, C# geht leider nicht. Ich arbeite mit einem SDK (Google Sketchup) und meine dll muss in C++ geschrieben sein. Also native C++.

    Ich brauche 2 Guids, da ich die in eine rgs-Datei eintragen muss, damit Sketchup meine dll findet. Und ich war jetzt ratlos, da ich nicht weiß, wo die zweite hin soll.





  • @Burkhi Die GUIDs erstellen ist nicht das Problem. Im Visual Studio Tools -> Create GUID, dann hab ich die 😉
    Mein Problem ist, wie/wo ich die GUIDs in meinem Code einsetzen muss, damit die dll wirklich registriert wird.



  • Läuft das normalerweise nicht so, dass man via IDL das Interface der COM Componente beschreibt (inkl. GUIDs) und dann wird die IDL Beschreibung in C oder C++ Files übersetzt?



  • Ich glaube du hast recht. Ich habe jetzt mal ein Projekt gemäß diesen Anweisungen befolgt und es erscheint auch eine id in der .idl

    [
    	uuid(xxxxxxx),
    	version(1.0),
    ]
    

    Aber jetzt stehe ich wieder vor dem Problem, woher und wohin die zweite guid soll. 🙄



  • frag Sketchup... die sollten das ja irgendwie dokumentiert haben,
    wenn die 2 GUIDs von dir verlangen.



  • Das ist ja das Problem - das SDK wird nicht mehr weiterentwickelt und die Foren sind verwaist. Deswegen hatte ich gehofft, hier Hilfe zu finden.

    Naja, probiere ich halt weiter rum.


Log in to reply