Com-Dll ohne Registrierung einbinden
-
Hallo zusammen,
mich plagt zur Zeit eine Frage, denn ich sehe Code eines Kollegen, der es irgendwie geschafft hat, Com-Dll's dynamisch einzubinden und daraus Klassen zu generieren, und das ohne dass diese registriert wären.
Problem ist, dass der Code so umfangreich ist, dass ich diesen Part nicht finde. Das einzige was ich immer wieder sehe, ist, dass mein Kollege die DLL mittels
#import "MeineCom-DLL" rename_namespace( "Namespace"" )oben im Code einbindet. Da das aber keine normale DLL ist, frage ich mich, wie er dann daraus Objekte instanziieren kann??
Mein Kollege ist aber auch gerade nicht erreichbar, so dass ich ihn selbst fragen könnte.
Kennt jemand diese Verfahrensweise, und kann mir das mal erläutern? Oder kennt jemand weiterführende links zu diesem Thema. Die Suche stellt sich als schwierig heraus, da ich immer wieder zu Com/Interop und verwendung von Com-Dll's in .NET stosse, aber nicht C++.
Für Hilfe schon mal Danke im Voraus,
-
Das bekannteste Beispiel für die import Anweisung ist wahrscheinlich
#import "msxml2.dll"Dort wird dann vor dem Kompilieren die Datei msxml4.tlh und msxml4.tli erzeugt in der WrapperKlassen stehen.
Aber das kann glaub ich auch nur klappen, wenn die COM-Componenten registriert wurden.
-
Ab Windows XP (oder war es doch Win2000pro?) gibts unregistered COM-Objekts. D.h. man kann auch COM Objekte erstellen, die nicht registriert werden müssen. Diese wird er wohl genutzt haben. Wie man diese in sein C++ Programm benutzt, kann ich dir jetzt leider nicht aus dem Stehgreif sagen.
-
Dieser Thread wurde von Moderator/in HumeSikkins aus dem Forum C++ in das Forum WinAPI verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
templäd schrieb:
Das bekannteste Beispiel für die import Anweisung ist wahrscheinlich
#import "msxml2.dll"Dort wird dann vor dem Kompilieren die Datei msxml4.tlh und msxml4.tli erzeugt in der WrapperKlassen stehen.
Aber das kann glaub ich auch nur klappen, wenn die COM-Componenten registriert wurden.
Für das reine Compilieren, brauchst Du nur die DLL (muss nicht registriert sein). Diese DLL muss einfach die Type-Library in den Resourcen enthalten. Du kannst auch direkt die TLB-Datei beim "#import" angeben.
Siehe:
http://msdn2.microsoft.com/8etzzkb6Das Ausführen Deines Programmes, ohne dass die entsprechende COM-Componente registriert ist, geht mittels Manifest...
Siehe:
http://msdn.microsoft.com/msdnmag/issues/05/04/RegFreeCOM/
-
Vielen Dank,
die Links haben mir sehr weitergeholfen. So ist das halt, wenn man mal im Studium C und C++ gelernt hat, aber dann für 3,5 Jahre C# mit .NET programmiert hat -> man hat alles vergessen

Gruß
Norman-Timo
-
norman_timo schrieb:
die Links haben mir sehr weitergeholfen. So ist das halt, wenn man mal im Studium C und C++ gelernt hat, aber dann für 3,5 Jahre C# mit .NET programmiert hat -> man hat alles vergessen

Vor 3 Jahren ging das auch noch nicht mit dem reg-free-COM
