Klasse bei DLL Aufruf angeben

Eigentlich ist mir die Frage peinlich, aber es kann sonst niemand helfen ... :)

Moderator: Moderatoren

Antworten
Marcel
Rookie
Rookie
Beiträge: 14
Registriert: Mi, 07. Okt 2009 7:46

Klasse bei DLL Aufruf angeben

Beitrag von Marcel »

Hi,
ich versuche beispielhaft eine mit C# erstellte dll Funktion aufzurufen, sie befindet sich allerdings in einer(unter-)Klasse
hier mein xbase++ versuch:

Code: Alles auswählen

// Es wird beispielhaft eine DLL aufgerufen:

   #include "Dll.ch"

   PROCEDURE Main
      LOCAL nDll, cCall


      // The normal way
      nDll := DllLoad( "lanz.DLL" )

      IF nDll <> 0
         // Call the API function
         ? DllCall( nDll, DLL_STDCALL, ;
                    "anz_ClassLib.XML_Class.checkFilesize, "c:\gdt.xml")

         // Release DLL
         DllUnload( nDll )
      ENDIF

   RETURN
so sieht die verwendung der dll nach dem referenzieren in c# aus:

Code: Alles auswählen

 lanz_ClassLib.XML_Class.checkFilesize(Pfad_XML);
XML_Class ist die Klasse in der ich mein ganzes XML Zeug reingepackt habe,
wenn ich die funktion in main habe und direkt aufrufe funktioniert es, das Problem ist wie schreibe ich die Kalsse in den Aufruf dazu?

Vielen Dank im Voraus
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9356
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 101 Mal
Danksagung erhalten: 361 Mal
Kontaktdaten:

Re: Klasse bei DLL Aufruf angeben

Beitrag von Tom »

Klassen haben Methoden. Funktionen sind klassenunabhängig. Methoden beziehen sich immer auf Klassenobjekte. Der Weg der Wahl wäre also, ein Klassenobjekt aus der C-Klasse zu bilden, um dann seine Methode verwenden zu können, aber ich glaube nicht, dass das mit in C erzeugten Klassen geht. Die Beschreibung des DLL-Wrappers spricht immer nur von Funktionen, weshalb ich davon ausgehe, dass in Fremdsprachen generierter Klassencode ohne Hilfsmittel nicht verwendbar ist. Deshalb müsstest Du eine Funktion in C schreiben - wie das geht und anschließend eingebunden wird, erklären die Beispiele in ...\SOURCE\SAMPLES\BASIC\CAPI. Noch einfacher wäre es, die Funktion direkt in Xbase++ zu schreiben.
Herzlich,
Tom
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15695
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Klasse bei DLL Aufruf angeben

Beitrag von brandelh »

@ TOM,

es ist keine C sondern C# Klasse. ;-)

@ all,

Irgendwo habe ich mal ein Beispiel gelesen wie man mit Xbase++ auf die c# Runtime DLL zugreifen kann.
Ich habe damit aber keine Erfahrung. Eventuell steht was auf der Alaska Seite.
Gruß
Hubert
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15695
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Klasse bei DLL Aufruf angeben

Beitrag von brandelh »

Gruß
Hubert
Antworten