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.