Fremde .dll mitliefern - wie?

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Delle
Beiträge: 1110
Registriert: 10.05.2005 22:48

Fremde .dll mitliefern - wie?

Beitrag von Delle »

Hallo,

angenommen man ist auf eine fremde .dll angewiesen - wie liefert man diese dem User mit?

Es handelt sich beim Programm um eine einzige .exe (portable) und ein typischer Installer ist nicht vorhanden/nötig.

Die DLL includen und immer temporär während Nutzung des Programm "neben" die .exe zu legen (und danach wieder zu löschen), ist ja auch nicht die saubere Art.

Dem User einfach "heimlich" in den System-Ordner installieren auch nicht.

Welche Möglichkeit gibt's noch? Ins "Home"-Verzeichnis vielleicht? Wo sucht das Programm automatisch nach der DLL?

Thaaaaaaaaaaaaaaaaaaaaanx! ;)
PB 5.73 LTS + Win 11
Benutzeravatar
mk-soft
Beiträge: 3361
Registriert: 24.11.2004 13:12
Wohnort: Germany

Re: Fremde .dll mitliefern - wie?

Beitrag von mk-soft »

Ich weiss nicht ob das auch mit x64 funktioniert:

Open DLL from memory: Link: https://www.purebasic.fr/english/viewtopic.php?t=42118
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul / OPC-Helper DLL
PB v3.30 / v5.7x - OS Mac Mini OSX 10.xx / Window 10 Pro. (X64) /Window 7 Pro. (X64) / Window XP Pro. (X86) / Ubuntu 14.04
Downloads auf My Webspace
Benutzeravatar
TroaX
Beiträge: 559
Registriert: 08.03.2013 14:27
Computerausstattung: PC: Ryzen 9 3950X, 64 GB RAM, 3060TI, 2.5 TB SSD, 3 FHD Displays | Lappi: Ryzen 7 4800H, 16 GB RAM, 1 TB SSD, 1650TI | Both: Win 10 Pro
Wohnort: Erndtebrück

Re: Fremde .dll mitliefern - wie?

Beitrag von TroaX »

Code: Alles auswählen

Ergebnis$ = GetCurrentDirectory()
Alle Datei-Zugriffe erfolgen relativ zu diesem Verzeichnis, wenn kein absoluter Pfad angegeben wird. Zum Ändern des aktuellen Verzeichnisses verwenden Sie SetCurrentDirectory().
Also wenn es dir nur darum geht, das dein Programm die DLL sicher findet, dann sollte das generell kein größeres Problem sein. Heimlich solltest du halt nichts machen. Das ist weder eine seriöse noch eine saubere Methode. Lege sie zusammen mit der .exe in ein Archiv und gut ist. Denn wenn der Nutzer das Programm löscht, bleibt die DLL trotzdem in seinem Versteck. Das muss nun wirklich nicht sein. Ansonsten wie mksoft durch seinen Link schauen, ob die DLL in den RAM und aus diesem geladen werden kann.
PC: AMD Ryzen 9 3950X | 64 GB RAM | RTX 3060 TI | 2,5 TB NVMe SSD | 2 TB SATA SSD | WIN 10 | 3x FHD Display
Mobil: AMD Ryzen 7 4800H | 16 GB RAM | GTX 1650 TI | 1 TB NVMe SSD | Win 10
Server: Raspberry Pi 4B 4GB | Debian/Yunohost + Nextcloud
Programmierung: PureBasic | PHP | Web (HTML, CSS, Javascript)
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 6866
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: Fremde .dll mitliefern - wie?

Beitrag von STARGÅTE »

Geht es hier wirklich um eine "fremde" DLL? Die darf doch gar nicht einfach so weiter verbreitet werden schon gar nicht "versteckt", außer die Lizenz lässt es zu. Ich weiß noch, wie Audacity immer den Benutzer aufgefordert hat sich die lame_enc.dll (oder wie sie hieß) selbst "zu besorgen", wenn man n MP3 erstellen möchte.

Ansonsten, wenn du wirklich nur eine Single-Exe verteilen willst, würde ich die DLL aus der Exe ins Temp-Verzeichnis kopieren lassen, aber auch nur, wenn die DLL nicht gefunden wird. Denn viele DLLs sind ja schon auf dem System vorhanden und werden alleine gefunden.
PB 5.73 ― Win 10, 20H2 ― Ryzen 9 3900X ― Radeon RX 5600 XT ITX ― Vivaldi 5.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Benutzeravatar
DrShrek
Beiträge: 1970
Registriert: 08.09.2004 00:59

Re: Fremde .dll mitliefern - wie?

Beitrag von DrShrek »

"Fremde DLL" schon die Umschreibung scheint ja hier "nicht ganz saubere" Wege gehen zu wollen.
Es ist entsprechend der Lizense der DLL zu verfahren.
Siehste! Geht doch....?!
PB*, *4PB, PetriDish, Movie2Image, PictureManager, TrainYourBrain, ...
Antworten