Autor |
Beitrag |
jojo-sp
      
Beiträge: 317
Windows XP Prof, Vista Ultimate & Home Premium, Windows 7
Delphi 7 Enterprise, Delphi 2009
|
Verfasst: Fr 16.01.09 16:52
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
_________________ Ist der Ruf erst ruiniert, lebts sich gänzlich ungeniert...
Wilhelm Busch (1832 - 1908)
|
|
wirbeldelphi
      
Beiträge: 29
|
Verfasst: Fr 16.01.09 19:45
Warum LongInt (signed 32bit), müßte das nicht Longword (DWORD = unsigned 32bit) sein?
_________________ Ich bin keine Signatur - ich putz hier nur.
|
|
jaenicke
      
Beiträge: 19315
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: 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
      
Beiträge: 29
|
Verfasst: Fr 16.01.09 20:37
void = kein parameter
_________________ Ich bin keine Signatur - ich putz hier nur.
|
|
Martok
      
Beiträge: 3661
Erhaltene Danke: 604
Win 8.1, Win 10 x64
Pascal: Lazarus Snapshot, Delphi 7,2007; PHP, JS: WebStorm
|
Verfasst: 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()...
_________________ "The phoenix's price isn't inevitable. It's not part of some deep balance built into the universe. It's just the parts of the game where you haven't figured out yet how to cheat."
|
|
jojo-sp 
      
Beiträge: 317
Windows XP Prof, Vista Ultimate & Home Premium, Windows 7
Delphi 7 Enterprise, Delphi 2009
|
Verfasst: 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.
_________________ Ist der Ruf erst ruiniert, lebts sich gänzlich ungeniert...
Wilhelm Busch (1832 - 1908)
|
|
Martok
      
Beiträge: 3661
Erhaltene Danke: 604
Win 8.1, Win 10 x64
Pascal: Lazarus Snapshot, Delphi 7,2007; PHP, JS: WebStorm
|
Verfasst: 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 
_________________ "The phoenix's price isn't inevitable. It's not part of some deep balance built into the universe. It's just the parts of the game where you haven't figured out yet how to cheat."
|
|
jojo-sp 
      
Beiträge: 317
Windows XP Prof, Vista Ultimate & Home Premium, Windows 7
Delphi 7 Enterprise, Delphi 2009
|
Verfasst: 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 
_________________ Ist der Ruf erst ruiniert, lebts sich gänzlich ungeniert...
Wilhelm Busch (1832 - 1908)
|
|
BenBE
      
Beiträge: 8721
Erhaltene Danke: 191
Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
|
Verfasst: 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 ...
_________________ Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
|
|