AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen FreePascal DLL-Funktionen in Lazarus/FP einbindbar / wie einzubinden?
Thema durchsuchen
Ansicht
Themen-Optionen

DLL-Funktionen in Lazarus/FP einbindbar / wie einzubinden?

Ein Thema von Delphi-Laie · begonnen am 11. Mär 2010 · letzter Beitrag vom 1. Dez 2013
 
Delphi-Laie

Registriert seit: 25. Nov 2005
1.474 Beiträge
 
Delphi 10.1 Berlin Starter
 
#30

Re: DLL-Funktionen in Lazarus/FP einbindbar / wie einzubinde

  Alt 22. Mär 2010, 15:49
Zitat von implementation:
Das ist keine Macke, sondern das liegt einfach daran, dass tlhelp32 für 32 Bit geschrieben ist.
Wenn du eine 64-Bit-Version davon gefunden hast, und es immer noch nicht läuft, dann solltest du dich wundern.
Aber 32 und 64 Bit sind nunmal unterschiedlich. Da kannste nix machen.
Die tlhelp32-Unit tut im Quelltext nicht viel mehr, als neben den nötigen Konstanten-, Typ- und Variablendeklarationen einige - die entsprechenden - Funktionen der kernel32.dll zu importieren. Was soll denn an einem DLL-Funktionsimport 32- oder 64-bittig sein? Wenn das 64-Bit-Lazarus die Unit fehlerfrei compiliert, dann liegt das Compilat ja wohl hoffentlich in einer 64-Bit-Version vor? Und falls nicht, wäre es auch nicht schlimm, schließlich funktioniert ja immerhin die 32-Bit-Version.

Es klappte ja nicht einmal (in meinem Programm, nicht Luckies), nur die relevanten Funktionen aus der tlhelp32-Unit zu extrahieren und unter Verzicht auf diese Unit in der uses-Anweisung nur die Funktionsimporte direkt in die MainForm-Unit zu kopieren. Es compiliert, aber die Funktionalität in der Exe ist bestenfalls lausig.

Immerhin funktionieren die 32-Bit-Compilate von Luckies Programm (Delphi und Lazarus) ja auch unter Windows 64 Bit! Nur diese eine Funktion "GetExeStringFromProcID" will in der 64-Bit-Version anscheinend nicht, aber wo hat die 32- oder 64-Bit-Spezifika?? Sie ruft CreateToolHelpSnapShot und - wohl vergeblich - Process32First und Proces32Next auf. Diese Aufrufe haben jedoch keine Bitbreitenspezifik?!

Zitat von implementation:
Bist du dir sicher, dass die Daten nicht heil bei der DLL ankommen? Vielleicht liegt auch in der der Fehler. Oder ist es gar eine 32-Bit-DLL?
Die Daten, die die DLL aus Dateien zieht, kommen heil bei dieser an, das merke ich ja am Programmverhalten. Die DLL ist 64 Bit und funktioniert auch teilweise - wenigstens der Modulschnappschuß und die 64-Bit-Hooks. Also, 64 Bit werden tatsächlich erzeugt.

Letztlich kann sich jeder anhand meines Anhangs weiter oben selbst davon überzeugen, daß irgendetwas mit dem 64-Bit-Compilat nicht stimmt.


Zur Zeit probiere, eher fummele ich an der Funktion "GetWindowModuleFileName", denn die wäre vielleicht eine brauchbare Alternative gewesen, aber an der klappt ja überhaupt nichts.
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:20 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