![]() |
Library in Lazarus
Ich habe ein DLL in Lazarus geschrieben und gebrauche dynlibs.LoadLibrary, GetProcAddress um den dll zu laden und die funktion aufzurufen.
In windows get alles sehr gut aber in linux und mac nicht. Weis jemand warum dass sein kann? hier ist ein test projekt: ![]() |
AW: Library in Lazarus
LoadLibrary() und GetProcAddress() sind WinAPI-Funktionen, die es nur unter Windows gibt.
Die Äquivalente in Linux dazu sind dlopen() bzw. dlsym() |
AW: Library in Lazarus
Ich sehe jetzt direkt keinen Fehler in deinem Code.
Ich selbst verwende Platformunabhängig (getestet unter Win32, Win64, Linux 32 Bit, Linux 64 Bit) folgenden Code, vielleicht findest du ja einen Unterschied: ![]() Beispielaufrufe: ![]() |
AW: Library in Lazarus
Zitat:
|
AW: Library in Lazarus
Zitat:
Was Ich aber nicht verstehe ist dass mein code nicht auf Linux und Mac funkzioniert. Ich habe schon beinahe die ganze lazarus forum nach gesehen, nix, nada. Echt komisch, Ich weis dass loadlibrary geht aber GetProcAddress scheint den entrypoint nicht zu finden, Ich denke dass linux/mac den namen anders exportiert. |
AW: Library in Lazarus
versuch mal
Delphi-Quellcode:
Ich weiß von C-Compilern, daß sie gerne noch die Parameter mit in den Exportnamen einkodieren/anhängen.
unit lib;
... exports callme name 'callme'; Eventuell macht Lazarus FreePascal das hier auch, wenn man diesen den Namen generieren läßt. Eventuell würde ein Blick in eine fertig kompilierte Linux-DLL (oder wie die da heißen) klarheit schaffen. |
AW: Library in Lazarus
Zitat:
unter Mac Dynamic Library, Dateiendung .dynlib |
AW: Library in Lazarus
Ich habe eine loesung gefunden,
1. alle methods muessen in the library unit exportiert werden. 2. auf Linux und Mac ist es besser um cdecl zu benuzten 3. um grosse string zu unterstuetzen muss man cmem als erstes in the uses clause eingeben fuer beide lib und lib gebraucher. Also es funkzioniert.
Code:
library test;
... exports //<- hier einlegen begin end. |
AW: Library in Lazarus
Zitat:
> siehe ![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:45 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