Fehler beim Einbinden einer DLL- Funktion...
-
Hallo,
ich möchte folgende Funktion in eine DLL auslagern (bereits erledigt):
http://www.delphi-forum.de/viewtopic.php?t=33074&highlight=datei+l�schen
(Delphi)
So, der Funktionsaufruf soll ja so aussehen:
DeleteFiles ('c:\test', '.', True);So schaut nun meine BCB- Variante zum Einbinden der DLL aus:
typedef void (* DLLFUNCTION1PROC)(LPSTR message); /* Zeiger auf exportierte Funktion */ HMODULE delf; DLLFUNCTION1PROC pfnDllFunction1 = NULL; delf = LoadLibrary("delf.dll"); if (delf == NULL) { MessageBeep(-1); /* DLL nicht im Pfad gefunden */ } pfnDllFunction1 = (DLLFUNCTION1PROC)GetProcAddress(delf, "DeleteFiles"); if (pfnDllFunction1 == NULL) { MessageBeep(-1); /* Funktion nicht gefunden */ } pfnDllFunction1("C:\test", "test.txt", TRUE); FreeLibrary(delf);Hier bekomme ich einen Fehler, dass zu viele Parameter im Funktionsaufruf vorhanden sind. Entferne ich "test.txt" und TRUE, bekomme ich eine Zugriffsverletzung bei 000000000 - wahrscheinlich wurden die Parameter halt nicht übernommen. Wie bekomme ich das hin, dass es richtig arbeitet?
Gruß
Roman
-
Du solltest vielleicht den Typen des Funktionspointers mit den Parametern definieren, die sie auch tatsächlich akzeptiert und nicht einfach mit irgendwas.
-
Hm... Ok... Ich habe leider kaum Erfahrungen mit DLLs... Wie meinst du könnte ich das sonst lösen?
Ich habe relativ viel gegooglet und einige Delphi- Beispiele gefunden, die ich aber leider nicht in BCB VCL umschreiben konnte.
-
shaftie schrieb:
typedef void (* DLLFUNCTION1PROC)(LPSTR message)
Wie kommst du auf das "LPSTR message"?
-
Ich hatte das aus einem Beispiel. Vlt. habe ich da etwas übersehen gehabt?
http://www.c-plusplus.net/forum/viewtopic-var-p-is-284764.htmlIch habe im Umgang mit dlls wirklich noch überhauptkeine Erfahrung. Das Erstellen der DLLs ist ja wunderbar einfach, aber das Aufrufen der Funktionen klappt noch nicht ganz...

-
Du musst dort natürlich angeben, welche Parameter die Funktion tatsächlich akzeptiert. Willst du denn eine Delphi-Funktion aufrufen? AFAIK musst du da PChar verwenden und nicht String.