![]() |
.Net dll in Win32
Hallo zusammen,
ich sitze jetzt schon seit geraumer Zeit an einem Problem. Ich habe eine .Net dll bekommen und versuche diese unter Delphi einzubinden. Hierfür habe ich wie gesagt die dll und auch eine .tlb Mein Versuch bis jetzt war hier über den COM Experten eine Anbindung zu schaffen. Hierbei ist die unten angeähngte ItacIms_TLB.pas Allerdings fehlen hier die Methoden. Es wurde zwar das interface _Mdata angelegt aber sonst auch schon nichts. Ich hänge mal die dll und die tlb mit an. Vielleicht kann mir irgendwer hierbei helfen. Es ist übrigens nur eine Testdll mit nur einer funktion. Der Inhalt:
Code:
Ich danke für eure Hilfe
ItacIms.Mdata mdata = new Mdata();
string x = mdata.GetKuckuck(); string y = mdata.GetInput("HUHU"); Gruß Christian
Delphi-Quellcode:
unit ItacIms_TLB;
// ************************************************************************ // // WARNUNG // ------- // Die in dieser Datei deklarierten Typen wurden aus Daten einer Typbibliothek // generiert. Wenn diese Typbibliothek explizit oder indirekt (über eine // andere Typbibliothek) reimportiert wird oder wenn der Befehl // 'Aktualisieren' im Typbibliotheks-Editor während des Bearbeitens der // Typbibliothek aktiviert ist, wird der Inhalt dieser Datei neu generiert und // alle manuell vorgenommenen Änderungen gehen verloren. // ************************************************************************ // // $Rev: 52393 $ // Datei am 15.07.2015 07:25:43 erzeugt aus der unten beschriebenen Typbibliothek. // ************************************************************************ // // Typbib.: C:\DelphiXE5\Projekte\NetTest\ItacIms.tlb (1) // LIBID: {B2D883E2-3EF3-4AB8-9C36-C85205529531} // LCID: 0 // Hilfedatei: // Hilfe-String: // Liste der Abhäng.: // (1) v2.0 stdole, (C:\Windows\SysWOW64\stdole2.tlb) // (2) v2.4 mscorlib, (C:\Windows\Microsoft.NET\Framework\v4.0.30319\mscorlib.tlb) // SYS_KIND: SYS_WIN32 // ************************************************************************ // {$TYPEDADDRESS OFF} // Unit muss ohne Typüberprüfung für Zeiger compiliert werden. {$WARN SYMBOL_PLATFORM OFF} {$WRITEABLECONST ON} {$VARPROPSETTER ON} {$ALIGN 4} interface uses Winapi.Windows, mscorlib_TLB, System.Classes, System.Variants, System.Win.StdVCL, Vcl.Graphics, Vcl.OleServer, Winapi.ActiveX; // *********************************************************************// // In der Typbibliothek deklarierte GUIDS. Die folgenden Präfixe werden verwendet: // Typbibliotheken : LIBID_xxxx // CoClasses : CLASS_xxxx // DISPInterfaces : DIID_xxxx // Nicht-DISP-Interfaces: IID_xxxx // *********************************************************************// const // Haupt- und Nebenversionen der Typbibliothek ItacImsMajorVersion = 1; ItacImsMinorVersion = 0; LIBID_ItacIms: TGUID = '{B2D883E2-3EF3-4AB8-9C36-C85205529531}'; IID__Mdata: TGUID = '{36653466-CC12-3A69-9F48-E0366930357A}'; CLASS_Mdata: TGUID = '{976229DF-F00C-3A19-9D4D-0A54213B2014}'; type // *********************************************************************// // Forward-Deklaration von in der Typbibliothek definierten Typen // *********************************************************************// _Mdata = interface; _MdataDisp = dispinterface; // *********************************************************************// // Deklaration von in der Typbibliothek definierten CoClasses // (HINWEIS: Hier wird jede CoClass ihrem Standard-Interface zugewiesen) // *********************************************************************// Mdata = _Mdata; // *********************************************************************// // Interface: _Mdata // Flags: (4432) Hidden Dual OleAutomation Dispatchable // GUID: {36653466-CC12-3A69-9F48-E0366930357A} // *********************************************************************// _Mdata = interface(IDispatch) ['{36653466-CC12-3A69-9F48-E0366930357A}'] end; // *********************************************************************// // DispIntf: _MdataDisp // Flags: (4432) Hidden Dual OleAutomation Dispatchable // GUID: {36653466-CC12-3A69-9F48-E0366930357A} // *********************************************************************// _MdataDisp = dispinterface ['{36653466-CC12-3A69-9F48-E0366930357A}'] end; // *********************************************************************// // Die Klasse CoMdata stellt die Methoden Create und CreateRemote zur // Verfügung, um Instanzen des Standard-Interface _Mdata, dargestellt // von CoClass Mdata, zu erzeugen. Diese Funktionen können // von einem Client verwendet werden, der die CoClasses automatisieren // will, die von dieser Typbibliothek dargestellt werden. // *********************************************************************// CoMdata = class class function Create: _Mdata; class function CreateRemote(const MachineName: string): _Mdata; end; // *********************************************************************// // OLE-Server-Proxy-Klassendeklaration // Server-Objekt : TMdata // Hilfe-String : // Standard-Interface: _Mdata // Def. Intf. DISP? : No // Ereignis-Interface: // TypeFlags : (2) CanCreate // *********************************************************************// TMdata = class(TOleServer) private FIntf: _Mdata; function GetDefaultInterface: _Mdata; protected procedure InitServerData; override; public constructor Create(AOwner: TComponent); override; destructor Destroy; override; procedure Connect; override; procedure ConnectTo(svrIntf: _Mdata); procedure Disconnect; override; property DefaultInterface: _Mdata read GetDefaultInterface; published end; procedure Register; resourcestring dtlServerPage = 'ActiveX'; dtlOcxPage = 'ActiveX'; implementation uses System.Win.ComObj; class function CoMdata.Create: _Mdata; begin Result := CreateComObject(CLASS_Mdata) as _Mdata; end; class function CoMdata.CreateRemote(const MachineName: string): _Mdata; begin Result := CreateRemoteComObject(MachineName, CLASS_Mdata) as _Mdata; end; procedure TMdata.InitServerData; const CServerData: TServerData = ( ClassID: '{976229DF-F00C-3A19-9D4D-0A54213B2014}'; IntfIID: '{36653466-CC12-3A69-9F48-E0366930357A}'; EventIID: ''; LicenseKey: nil; Version: 500); begin ServerData := @CServerData; end; procedure TMdata.Connect; var punk: IUnknown; begin if FIntf = nil then begin punk := GetServer; Fintf:= punk as _Mdata; end; end; procedure TMdata.ConnectTo(svrIntf: _Mdata); begin Disconnect; FIntf := svrIntf; end; procedure TMdata.DisConnect; begin if Fintf <> nil then begin FIntf := nil; end; end; function TMdata.GetDefaultInterface: _Mdata; begin if FIntf = nil then Connect; Assert(FIntf <> nil, 'DefaultInterface ist NULL. Die Komponente ist nicht mit dem Server verbunden. Sie müssen vor dieser Operation "Connect" oder "ConnectTo" aufrufen'); Result := FIntf; end; constructor TMdata.Create(AOwner: TComponent); begin inherited Create(AOwner); end; destructor TMdata.Destroy; begin inherited Destroy; end; procedure Register; begin RegisterComponents(dtlServerPage, [TMdata]); end; end. |
AW: .Net dll in Win32
Liste der Anhänge anzeigen (Anzahl: 1)
Anhang
|
AW: .Net dll in Win32
Wir haben dafür eine eigene DLL (mit Oxygene, aber das geht auch mit C#) erstellt, die die .NET DLL kapselt und die nötigen Funktionen als normale DLL Exporte bereitstellt.
|
AW: .Net dll in Win32
Hallo, Danke für deine Antwort.
Ich habe leider auch die eigentliche .Net dll keinen Einfluss. Die bekomme ich von einer externen Firma. Ich kann maximal fragen ob sie diese also COM kompatibel erzeugen können. Aber ich verstehe ich nicht ganz wo die Funktionen eigentlich landen, bzw. wie ich diese aufrufen kann. |
AW: .Net dll in Win32
Du sollst die .net DLL auch nicht ändern, sondern mit einer weiteren DLL kapseln und Delphi-freundlicher gestalten.
|
AW: .Net dll in Win32
Warum kramst Du den alten Beitrag aus?
|
AW: .Net dll in Win32
Hallo noch einmal.
Also ich habe es jetzt hinbekommen. Meine größte Hilfe war hier. ![]() Danke an alle beteiligten. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:41 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz