![]() |
Problem DLL aufruf
Delphi-Quellcode:
hab ich mit
typedef int (*callback) (char channel, int deb, int size);
extern "C" { __declspec(dllexport) int __cdecl upload_bin_image ( char channel, int deb, int size, const char *szFichier, int write_sam_file, char *resultat ); __declspec(dllexport) int __cdecl download_bin_image ( char channel, int deb, int size, int offset, const char *fichier, const char *path, char *resultat ); __declspec(dllexport) int __cdecl set_dll_parameter(char opt, unsigned int param); __declspec(dllexport) int __cdecl boot_bin_target(char channel, const char *fichier_fls, char *resultat2, char *resultat); __declspec(dllexport) char *__cdecl get_dll_version(); __declspec(dllexport) int __cdecl open_comm_port ( char channel, const char *szPort, const char *szPort2, unsigned int speed, char *resultat ); __declspec(dllexport) int __cdecl close_comm_port(char channel, char *resultat); __declspec(dllexport) int __cdecl force_target_reset(char channel, char, char, char, char, char *); __declspec(dllexport) int __cdecl init_callback(callback fct);
Delphi-Quellcode:
übersetzt aber schon die Function get_dll_version gibt falsche werte aus
type
callback = Integer; channel = Integer; deb = Integer; Size = Integer; type TForm1 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; implementation {$R *.dfm} Function upload_bin_image(Channel,deb,size : Integer; OutFile : String; write_sam_file : Integer; result1 : String):Integer; cdecl; external 'DownloadDll.dll'; Function download_bin_image(Channel,deb,size,Offset : Integer; InFile,Path : String; result1 : String):Integer; cdecl; external 'DownloadDll.dll'; Function set_dll_parameter(opt : String; param : Integer): Integer; cdecl; external 'DownloadDll.dll'; Function boot_bin_target(channel : Integer; flsFile, result2, result1 : String): Integer; cdecl; external 'DownloadDll.dll'; Function get_dll_version: String; cdecl; external 'DownloadDll.dll'; Function close_comm_port(channel : Integer; result1 : String): Integer; cdecl; external 'DownloadDll.dll'; Function open_comm_port(channel : Integer; Port1,Port2 : String; Speed : Integer; result1 : String): Integer; cdecl; external 'DownloadDll.dll'; |
Re: Problem DLL aufruf
Ersetze String mal durch PChar.
Grüsse, Dirk |
Re: Problem DLL aufruf
PAnsiChar ... besser gleich an Delphi 2009 oder Neueres denken.
|
Re: Problem DLL aufruf
ok das passt erstmal aber hier ist noch ein Problem
Delphi-Quellcode:
was ist fct
int __cdecl init_callback(callback fct);
und ist das
Delphi-Quellcode:
mit
typedef int (*callback) (char channel, int deb, int size);
extern "C"
Delphi-Quellcode:
richtig Übersetzt
type
callback = Integer; channel = Char; deb = Integer; Size = Integer; |
Re: Problem DLL aufruf
nee, ist vermutlich so
Delphi-Quellcode:
// int __cdecl init_callback(callback fct);
function init_callback(fct: callback): Integer; cdecl; // typedef int (*callback) (char channel, int deb, int size); type callback = function(channel: Byte; deb, size: Integer): Integer; stdcall; |
Re: Problem DLL aufruf
Dankeschön
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:52 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz