Weitergabe von Prozeduren per DLL, User-Lib oder Source?
Verfasst: 25.09.2004 01:57
Hallöchen,
ich befasse mich gerade mit der Frage, wie man am besten häufig genutzte Prozeduren auslagert, um sie von vielen unterschiedlichen Programmen nutzen zu können.
Dabei steht zur Wahl:
- eine User-Library erstellen
- eine DLL erstellen
- einfach als PB-Sourcecode speichern und per includefile einbinden
Wichtig ist dabei auch der Aspekt, dass die Prozedur auch an andere weitergegeben werden können soll, diese also die Prozedur nutzen können für ihre eigenen Programme, aber ohne den Sourcecode manipulieren oder entziffern zu können.
Dabei fällt eigentlich der Sourcecode per Include schonmal raus, denn da könnte man den Source beliebig ändern. Aber für NUR eigene Projekte imo ganz nützlich, direkt als Code eingefügt.
Bei einer User-Lib ist es so eine Sache mit der Kompatiblität zu den einzelnen Versionen. 3.90 Libs können nicht mit 3.91 verwendet werden, und umgekehrt. Da besteht die Gefahr, dass es schnell durch Updates nicht mehr läuft. Wer das aber auf dem neuesten Stand immer hält, hat mit der User-Lib eine gute Möglichkeit die PB-Befehle zu erweitern, ohne dass man merkt, dass diese nicht direkt PB-eigene-Befehle sind.
Eine DLL bietet die Möglichkeit, den Source zu verschlüsseln (wie die User-Lib ja auch) und die Prozedur somit als Bibliothek mitzuliefern welche erst geöffnet werden muss. Nachteil der DLL ist, dass sie erst umständlich geöffnet und dann per CallFunction[Fast] gestartet werden muss, und Parameter etwas eingeschränkt sind (20 max. z.B.).
Außerdem wird eine DLL in der Regel ja als Datei mitgeliefert. (Kann man aber imo auch als binary einfügen, oder? Weiß da jemand was zu?)
Das wären mal meine Gedankengänge dazu. Habt ihr da eigene Erfahrungen gemacht, was besser wäre, und was sich leichter handhaben lässt?
Ich dachte nämlich daran, mal ein paar Winkel-Funktionen für 2D-Spiele zu veröffentlichen und suche daher auch eine geeignete Möglichkeit. User-Lib ist mir aufgrund der Kompatiblitätsproblemen eigentlich zu unsicher, aber wenn sich hier gute Gründe einfinden, eine Userlib einer DLL vorzuziehen, kann man ja nochmal drüber nachdenken.
mfg.
Sunny
ich befasse mich gerade mit der Frage, wie man am besten häufig genutzte Prozeduren auslagert, um sie von vielen unterschiedlichen Programmen nutzen zu können.
Dabei steht zur Wahl:
- eine User-Library erstellen
- eine DLL erstellen
- einfach als PB-Sourcecode speichern und per includefile einbinden
Wichtig ist dabei auch der Aspekt, dass die Prozedur auch an andere weitergegeben werden können soll, diese also die Prozedur nutzen können für ihre eigenen Programme, aber ohne den Sourcecode manipulieren oder entziffern zu können.
Dabei fällt eigentlich der Sourcecode per Include schonmal raus, denn da könnte man den Source beliebig ändern. Aber für NUR eigene Projekte imo ganz nützlich, direkt als Code eingefügt.
Bei einer User-Lib ist es so eine Sache mit der Kompatiblität zu den einzelnen Versionen. 3.90 Libs können nicht mit 3.91 verwendet werden, und umgekehrt. Da besteht die Gefahr, dass es schnell durch Updates nicht mehr läuft. Wer das aber auf dem neuesten Stand immer hält, hat mit der User-Lib eine gute Möglichkeit die PB-Befehle zu erweitern, ohne dass man merkt, dass diese nicht direkt PB-eigene-Befehle sind.
Eine DLL bietet die Möglichkeit, den Source zu verschlüsseln (wie die User-Lib ja auch) und die Prozedur somit als Bibliothek mitzuliefern welche erst geöffnet werden muss. Nachteil der DLL ist, dass sie erst umständlich geöffnet und dann per CallFunction[Fast] gestartet werden muss, und Parameter etwas eingeschränkt sind (20 max. z.B.).
Außerdem wird eine DLL in der Regel ja als Datei mitgeliefert. (Kann man aber imo auch als binary einfügen, oder? Weiß da jemand was zu?)
Das wären mal meine Gedankengänge dazu. Habt ihr da eigene Erfahrungen gemacht, was besser wäre, und was sich leichter handhaben lässt?
Ich dachte nämlich daran, mal ein paar Winkel-Funktionen für 2D-Spiele zu veröffentlichen und suche daher auch eine geeignete Möglichkeit. User-Lib ist mir aufgrund der Kompatiblitätsproblemen eigentlich zu unsicher, aber wenn sich hier gute Gründe einfinden, eine Userlib einer DLL vorzuziehen, kann man ja nochmal drüber nachdenken.
mfg.
Sunny