Entwickler-Ecke
Sonstiges (Delphi) - DLL Initialisierung
jojo-sp - Fr 16.01.09 16:52
Titel: DLL Initialisierung
Moinsen,
ich stehe gerad auf dem Schlauch :-)
Ich habe folgenden Code aus einem C Beispiel zum Aufrufen einer Dll-Funktion:
C#-Quelltext
1:
| EXT DWORD IMP OpenIsdcl(VOID); |
(Rückgabewert <> 0 alles OK, = 0 Fehler)
Ich habe ihn wie folgt in Delphi implementiert:
Delphi-Quelltext
1:
| function OpenIsdcl: LongInt; stdcall; external 'isdcl.dll'; |
Leider bekommen ich immer eine 0 Zurück. Auf dem Rechner läuft bereits ein Tool (ohne Quelltext), dass dieselbe DLL verwendet und keine Zicken macht.
Vielleicht habe ich auch nur Falsch übersetzt?
MfG Johannes
wirbeldelphi - Fr 16.01.09 19:45
Warum LongInt (signed 32bit), müßte das nicht Longword (DWORD = unsigned 32bit) sein?
jaenicke - Fr 16.01.09 20:21
Btw. gibt es DWORD auch in Delphi. ;-)
Was mir bei dem C-Quelltext nicht so klar ist ist was das void in den Klammern heißt. Gibt es da vielleicht einen Parameter?
wirbeldelphi - Fr 16.01.09 20:37
void = kein parameter
Martok - Sa 17.01.09 16:53
Interessant wären noch die EXT und INT Macros und was die dann so an Code generieren, außer __dllexport()...
jojo-sp - Do 22.01.09 10:39
Hallo,
war ein paar Tage unterwegs ohne Internet :-( :-).
Der betreffende Bereich der include Datei sieht wie folgt aus:
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23:
| // Import from dll
#ifndef VC6
#define EXT extern "C" __stdcall #define IMP __import
#else
#define EXT #define IMP __stdcall
#endif
EXT DWORD IMP OpenIsdcl(VOID); EXT DWORD IMP CloseIsdcl(VOID);
... Noch weitere dll proceduren/funktionen
//extern "C" __stdcall DWORD __import
#endif |
Ich sehe da zumindest nichts besonderes.
Martok - Do 22.01.09 16:58
Gut, ich auch nicht. Eventuell muss man die DLL noch irgendwie initialisieren?
Hast du zufällig ein komplettes Minimal-Beispiel, was man mal vollständig übersetzen könnte? Wenns dann auch nicht geht, ist das Problem ein anders ;)
jojo-sp - Fr 23.01.09 09:39
Laut der Beschreibung muss man zur Initialisierung nur die Open-Funktion ansprechen. Leider habe ich kein Beispiel wie die DLL genau angesprochen werden muss. In der Beschreibung steht eigentlich auch nur das drin, was ich bereits mache. Vielleicht nochmal drüber schlafen und die Idee kommt... vielleicht :-)
BenBE - Di 27.01.09 16:04
Ggf. kannst Du ja mal den vollständigen C-Code und die Beschreibung der DLL uppen, vielleicht kommt man damit etwas weiter ...
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!