Hallo,
ich hoffe man kann mir weiterhelfen, ich versuche schon seit 4Tagen das Problem zu lösen. Leider bis jetzt kein Erfolg. und zwar.
ich habe eine Delphi-DLL. Diese enthält folgende Funktionen
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| function SetValues(w1, w2: WORD): Byte; stdcall; function WriteBlock(b1 : Byte; data: pointer; Size: WORD): Byte; stdcall; function Init(Var Pptr1, Pptr2 : Pointer) : Byte; stdcall;
var ptr1, ptr2 : pointer; ... Init(ptr1,ptr2); |
und somit kann ich auf die Arrays in der DLL zugreifen.
In Delphi funktioniert auch alles.
Ich versuche das ganze in C++ Builder umzuschreiben:
In der Header-file wie folgt deklariert:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22:
| class TForm1 : public TForm { __published: ... ... private: typedef unsigned char (__stdcall *LPSETVALUES)(WORD, WORD); typedef unsigned char (__stdcall *LPWRITEBLOCK)(unsigned char ,unsigned char*, WORD); typedef unsigned char (__stdcall *LPINIT)(unsigned char* ,unsigned char*);
HINSTANCE hDll; LPSETVALUES lpSetValues; LPWRITEBLOCK lpWriteBlock; LPINIT lpInit; unsigned char *ptr1; unsigned char *ptr2;
public: __fastcall TForm1(TComponent* Owner); }; |
Die Funktion "SetValues" funktioniert.
Die Funktion "Init" scheint nicht zu funktionieren.
Die beiden Pointer Ptr1 und Ptr2 bleiben nach wie vor NULL.
Was mache ich falsch bei der Deklaration??
Ist die Deklaration der Funktion "WriteBlock" richtig?
ich bitte um Hilfe
vielen Dank
Moderiert von
raziel: Delphi-Tags hinzugefügt
Moderiert von
raziel: C#-Tags hinzugefügt