Fremde .dll mitliefern - wie?

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Delle
Beiträge: 1118
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 6.02 LTS + Win 11
Benutzeravatar
mk-soft
Beiträge: 3695
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
Downloads auf MyWebspace / OneDrive
Benutzeravatar
TroaX
Beiträge: 659
Registriert: 08.03.2013 14:27
Computerausstattung: PC: Ryzen 9 3950X, 96 GB RAM, RX6800XT, 2.5 TB SSD, 21:9 Display, Pop_OS! | Lappi: Ryzen 7 5800H, 16 GB RAM, 1 TB SSD, Pop_OS!
Wohnort: NRW
Kontaktdaten:

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: Ryzen 9 3950X | 96 GB RAM | RX6800XT | 2,5 TB NVMe | Pop_OS!
Notebook: 16" 3:2 | Ryzen 7 5800H | 16 GB RAM | Radeon Vega | 1TB NVMe | Pop_OS!
NAS: Fritz.Box :lol:
Coding: Purebasic 6.04 | PHP | HTML | CSS | Javascript
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 6996
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 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.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