Zitat von
JamesTKirk:
Würdest/könntest du mir bitte den Code zeigen, den du ausprobiert hast? Vielleicht kann ich dir helfen und für die Zukunft das Problem lösen.
Da will es aber einer ganz genau wissen...also bitteschön, weder
Delphi-Quellcode:
{$mode DELPHI}{$H+}
uses Windows,
Classes,
{$ifdef fpc}
jwatlhelp32,
{$else}
tlhelp32,
{$endif}
SysUtils;
noch
Delphi-Quellcode:
{$mode DELPHI}{$H+}
{$ifdef fpc}
uses Windows,
Classes,
jwatlhelp32,
SysUtils;
{$else}
uses Windows,
Classes,
tlhelp32,
SysUtils;
{$endif}
compilieren die tlhelp32-
unit, erst, wenn ich die explizit aufrufe und damit das Compilieren erzwinge. Übrigens, {$mode DELPHI}{$H+} scheint auch ohne {$H+} zu funktioneren, also nur {$mode DELPHI} bzw. {$mode DELPHI}//{$H+}
Zitat von
JamesTKirk:
Zitat von
Delphi-Laie:
Es handelt sich ohnehin um ein reines Windowsprogramm, warum also solche Verrenkungen, die wohl eine gewisse Plattformunabhängigkeit erreichen sollen? Ich glaube kaum, daß andere Betriebsprogramme die gleichen Hooks verwenden, ja, ich weiß nicht einmal, ob die überhaupt welche oder ähnliche Funktionalitäten zur Verfügung stellen.
Das war jetzt auch nicht für Cross-Plattform gedacht - wobei ich Defines da äußerst gerne verwende - sondern, um die parallele Nutzung des Codes mit Delphi und FPC zu ermöglichen (wobei das ja, wie oben geschrieben, nur eine der beiden Möglichkeiten ist). Da sich Units zwischen Delphi und FPC unterscheiden können, ist es manchmal angebracht da einige solcher Verrenkungen zu betreiben, wenn man mit beiden Compilern arbeiten möchte.
Delphi schreibe ich allmählich ab, und Delphi 64 Bit ohnehin. Falls es noch kommen sollte, wann? Dann wird der Zeitpunkt, das noch kostendeckend, geschweige denn profitabel am Markt abzusetzen, längst vorbei sein. Freie Software war schon manches Mal schneller, und so wird es auch hier wohl sein. Aber das ist ein anderes Thema und wurde hier schon zuhauf diskutiert.
Zitat von
JamesTKirk:
Zitat von
Delphi-Laie:
Nunmehr stehe ich vor der Aufgabe, das Hostprogramm 64 Bit mit Lazarus zu schreiben, denn das 32-Bit-Delphi-Compilat des Hostprogrammes verweigert, wie zu erwarten, die Zusammenarbeit mit der 64-Bit-
DLL (es findet die
DLL nicht einmal, obwohl im selben Verzeichnis liegend).
Dass die
DLL nicht gefunden wird, ist meiner Ansicht nach sogar eine sehr gute Lösung (von Windows - ich weiß aus dem Stegreif nicht, ob Linux da ähnlich vorgeht), da man so nicht auf die dumme Idee kommen kann eine 64-Bit
DLL in einem 32-Bit Prozess zu nutzen oder umgekehrt. Dies geht nämlich spätestens bei der Annahme SizeOf(Integer)=SizeOf(Pointer) in die Hose
Das ändert aber nichts daran, daß die Fehlermeldung falsch und damit irritierend ist. Die
DLL im selben Verzeichnis
muß gefunden werden. Vielmehr dürften Kompatibilitätsprüfungen negativ ausfallen.
Zitat von
JamesTKirk:
Zitat von
Delphi-Laie:
Mit einem einfach Umbenennen der
dpr- in eine lpr-Datei ist es natürlich beileibe nicht getan. Entweder funktioniert das dann mit einer
DLL, in die units tlhelp32- und/oder einer tlhelp32 eingebunden werden, oder eben nicht. Ich lasse mich überraschen.
Dann noch viel Erfolg beim Umstellen und ärgere dich nicht, wenn was nicht auf Anhieb funktioniert... dafür ist ja dann das Forum da
Naja, ich kann mich durchaus noch an einen Fall erinnern, bei dem die Butter zu dick aufgetragen wurde (öffentlich versprochene Hilfe kam nicht, selbst auf Nachfrage per persönlicher Mitteilung nicht), aber das war wirklich die Ausnahme. Letztlich konnte ich mit Hilfe der Foren und auch der im Internet verstreuten sog. Tutorials alle Probleme entweder lösen oder ziemlich treffsicher (?) als unlösbar abhaken. Dafür gebührt auch diesem Forum mein Dank, und speziell natürlich an Dich!