Autor Beitrag
jojo-sp
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 317

Windows XP Prof, Vista Ultimate & Home Premium, Windows 7
Delphi 7 Enterprise, Delphi 2009
BeitragVerfasst: 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:

ausblenden C#-Quelltext
1:
EXT DWORD IMP OpenIsdcl(VOID);					


(Rückgabewert <> 0 alles OK, = 0 Fehler)

Ich habe ihn wie folgt in Delphi implementiert:

ausblenden Delphi-Quelltext
1:
function OpenIsdcl: LongInt; stdcallexternal '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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 29



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19315
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 29



BeitragVerfasst: Fr 16.01.09 20:37 
void = kein parameter

_________________
Ich bin keine Signatur - ich putz hier nur.
Martok
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 3661
Erhaltene Danke: 604

Win 8.1, Win 10 x64
Pascal: Lazarus Snapshot, Delphi 7,2007; PHP, JS: WebStorm
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 317

Windows XP Prof, Vista Ultimate & Home Premium, Windows 7
Delphi 7 Enterprise, Delphi 2009
BeitragVerfasst: Do 22.01.09 10:39 
Hallo,

war ein paar Tage unterwegs ohne Internet :-( :-).

Der betreffende Bereich der include Datei sieht wie folgt aus:

ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 3661
Erhaltene Danke: 604

Win 8.1, Win 10 x64
Pascal: Lazarus Snapshot, Delphi 7,2007; PHP, JS: WebStorm
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 317

Windows XP Prof, Vista Ultimate & Home Premium, Windows 7
Delphi 7 Enterprise, Delphi 2009
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: 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.