![]() |
Rückgabeparameter DLL analysieren
Ich habe eine 32 Bit DLL, die funktioniert. Nun habe ich auch eine 64 Bit vom selben Hersteller bekommen. Diese macht Probleme. Zuerst habe ich mein Projekt mal testweise auf 64 Bit umgestellt, da diese offenbar auch nur mit der 64 Bit Variante zurechtkommt.
Nun habe ich in dieser DLL eine Funktion, die mehrere Parameter zurückgibt. Diese scheinen aber nicht mehr zu passen. Der Aufruf sieht so aus
Delphi-Quellcode:
Gibt es eine Möglichkeit, sich die Rückgabeparameter erst einmal "roh" anzuschauen? Vielleicht ist die Deklaration bei 64 auch anders als bei 32.
function FindFirstx(hier stehen einige Parameter
var fInfo1 : _xINFO; ): Boolean stdcall; external NameDLL name 'FindFirstx'; Wenn ich einen Hexcode bzw. String anschauen könnte, wäre das erst einmal ausreichend. Reichen die Infos oder muss ich genauer erklären? |
AW: Rückgabeparameter DLL analysieren
Nicht wirklich, oder? Tools wie
![]() Meine Vermutung wäre eher dass sich in 64 Bit an der Größe der Parameter etwas ändert, z.B. weil es auf der Delphi-Gegenseite falsch definiert wurde und ein Typ verwendet wurde der sich nicht mitänderte. |
AW: Rückgabeparameter DLL analysieren
Etwas mehr Information wäre schon schön...
Wie ist _xINFO definiert etc.... gibt es eine *.h Datei zur DLL? oder liefert der Hersteller eine *.pas? |
AW: Rückgabeparameter DLL analysieren
Hallo,
wenn _xINFO ein Record ist, muss man auch noch das ev. geänderte Alignment der Parameter berücksichtigen. Zitat:
|
AW: Rückgabeparameter DLL analysieren
Zitat:
Zitat:
Es gibt eine Headerdatei und diese heißt auch xxxxx32.h. Eine xxxxx64.h habe ich nicht bekommen. Leider gibt es keine *.pas hierzu. |
AW: Rückgabeparameter DLL analysieren
Da Du ja nicht bereit bist mehr Informationen zu liefern :roll:
Leg Dir einen Buffer an: TInfo_xInfo = Array[0..4096] of byte. Grösser als dein Struct fülle den mit 0 oder was auch immer und lass in auf Deine Dll los. Dann kannst Du ja schauen was drin steht |
AW: Rückgabeparameter DLL analysieren
Zitat:
Ich weiß aber nicht so recht, ob ich die Strukturen offenlegen darf. Deswegen nur die Ansätze. Zitat:
Das klingt ja nicht schlecht. Werde das mal probieren und schauen, ob ich da mehr sehe. Danke trotzdem. |
AW: Rückgabeparameter DLL analysieren
Zitat:
Ich muss nun auf den Hersteller zugehen, damit er das nochmal testet. Er kann ja in die Quellen der DLL schauen im Gegensatz zu mir. Danke nochmals für den Tipp. |
AW: Rückgabeparameter DLL analysieren
Zitat:
Also statt
Code:
schreibst du
int makeMeRich(int Bernsteinzimmer, char* Weltformel);
Code:
Möchte Bits und Byte wetten, dass du Schindluder bei den Datentypen getrieben hast und bspw. Cardinal anstatt SIZE_T oder PChar anstatt PByte oder Integer anstatt THandle oder oder oder bei deiner Übersetzung genommen hast.
int myFunction(int a, char* b);
|
AW: Rückgabeparameter DLL analysieren
Hier die originale Deklaration in C
Code:
die ich so übersetzt habe:
XSX_BOOL L_EXPORTS FindFirstx(
int32 par1, const char *par2, uint8 par3, uint8 par4, int32 *par5, char *par6, uint32_t par7);
Delphi-Quellcode:
Ist da was falsch?
function FindFirstx(
par1 : int32; const par2: arDataTcp; //= array[0..1000] of Ansichar; par3 : BYTE; par4 : BYTE; var par5 : int32; var par6 : arDataTcp; //= array[0..1000] of Ansichar; par7 : uint32 ): Boolean stdcall; external NameDLL name 'FindFirstx'; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:49 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