Deutsch
Includes

MemoryModule - DLLs direkt aus Speicherberich laden

 

Sebastian
König
Hallo zusammen,

hier mal eine Kleinigkeit zu Weihnachten Da mich jemand darum gebeten hatte, habe ich einen Code, mit dem man DLLs direkt und ohne Umweg über eine temporäre Datei aus einem Speicherbereich (der zum Beispiel von Frank Abbings Datengenerator erstellt wird) in ein Programm laden kann, von C nach XProfan übersetzt und eine Include erstellt. Da es vielleicht noch andere interessiert, poste ich es mal hier.

Die Benutzung ist wirklich sehr einfach und sollte an Hand des beigelegten Testcodes leicht nachzuvollziehen sein - ansonsten einfach fragen! Leider funktioniert es erst ab XProfan 9.0, da ich Version 8.0 manche verschachtelten long()-Aufrufe irgendwie nicht besonders mag...

Viel Spaß damit und natürlich Frohe Weihnachten!

Sebastian

32 kB
Hochgeladen:24.12.2006
Ladeanzahl288
Herunterladen
 
Windows XP, XProfan/Profan² 4.5 bis 11
Profan2Cpp-Homepage:  [...] 
Alte Profan²-Seite:  [...] 
24.12.2006  
 




Frank
Abbing
Hallo Sebastian,

konnte es noch nicht richtig testen. XPSE mag deine zwei Long hintereinander irgendwie (noch) nicht. Ich denke, iF schafft da bald Abhilfe.
So eine Technik wäre auch was für die mit XPIA erzeugten Codes, ich werde nach den Feiertagen mal damit experimentieren.

Frohes Fest!
 
24.12.2006  
 



Oh, das ist schön
Jetzt kann ich MemoryModule direkt in XProfan nutzen. Sind ja wieder ungeahnte Möglichkeiten.

Schönes Weihnachtsgeschenk

Gruß
Thomas
 
24.12.2006  
 




Sebastian
König
[quote:ba811f0967]konnte es noch nicht richtig testen. XPSE mag deine zwei Long hintereinander irgendwie (noch) nicht. Ich denke, iF schafft da bald Abhilfe.[/quote:ba811f0967] Vorerst kannst Du es ja auch einfach mit XProfan direkt testen...
 
Windows XP, XProfan/Profan² 4.5 bis 11
Profan2Cpp-Homepage:  [...] 
Alte Profan²-Seite:  [...] 
25.12.2006  
 




Frank
Abbing
Funktioniert einwandfrei, wenn ich diese Technik mit XPIA verwenden würde. Wobei dadurch für XPIA zwei wertvolle Features entstehen:

- die Dll ist nun permanent im Speicher und braucht nicht mehr explizit geladen zu werden. Etwa, wenn eine Funktion auf die Variablen einer anderen Funktion zugreifen möchte

- die Dll braucht nicht mehr temporär geschrieben zu werden

Grosser Nachteil ist aber die Freigabe mittels FreeLibraryM(hModule&). Hier kann XPIA nicht immer die passende Stelle erkennen, wann das Module wieder freigegeben werden muss. End ist sicher nicht in jedem Programm vorhanden. Allerdings denke ich, dass das Module bei neueren Windowsversionen automatisch freigegeben wird, sobald sich das Hauptprogramm beendet.

Dürfte ich die Inc eigentlich in XPIA verwenden?
 
29.12.2006  
 




Sebastian
König
Hallo Frank,

[quote:6a4bc8234d=Frank Abbing]Dürfte ich die Inc eigentlich in XPIA verwenden?[/quote:6a4bc8234d]
wie ich gerade feststellen musste, ist die Frage relativ kompliziert...

Denn wie der ursprüngliche C-Code steht die Inc unter der LGPL. Für die Verwendung in XPIA selbst sehe ich dadurch keine Probleme - der würde ja im Grunde nur ein zusätzliches $I MemoryModule.inc in die erzeugten Codes einbinden.

Die entscheidende Frage ist, was das ganze wohl für die Programme, die dann die Inc benutzen, bedeuted. Hierzu erstmal ein Wikipedia-Auszug:
[quote:6a4bc8234d=Wikipedia]Im Gegensatz zur GPL dürfen alle Programme, die LGPL-lizenzierte Software nur extern benutzen, zum Beispiel als DLL Files, ihre eigene Lizenz behalten. Damit eignet sich die LGPL besonders als Lizenz für Bibliotheken, deren Benutzung man auch Programmierern proprietärer Programme erlauben will. Soll die unter der LGPL lizenzierte Software dagegen fest in ein anderes Programm eingebunden werden, muss auch das andere Programm unter der LGPL bzw. einer kompatiblen Lizenz stehen.[/quote:6a4bc8234d]
Klingt erstmal nicht so toll. Das Einbinden der Inc ist wohl ziemlich klar als statisches Linken zu interpretieren. Und auch ein Kompilieren der Inc als Unit würde an der Situation nichts ändern. Glücklicherweise sagt der englische Wikipedia-Artikel etwas genauer, wo eigentlich das Problem liegt:

[quote:6a4bc8234d=Wikipedia (englisch)]The LGPL places copyleft restrictions on the program itself but does not apply these restrictions to other software that merely links with the program. There are, however, certain other restrictions on this software. Essentially, it must be possible for the software to be linked with a newer version of the LGPL-covered program. The most commonly used method for doing so is to use a suitable shared library mechanism for linking. Alternatively, a statically linked library is allowed if either source code or linkable object files are provided.[/quote:6a4bc8234d]
Vielleicht lässt sich diese Bedingung ja einigermaßen erfüllen - zum Beipiel indem man zusammen mit dem Programm den kompilierten Code als PRC-Datei und eine PCU-Version der Inc veröffentlicht.

Ist natürlich nur eine Idee - weitere Gedanken dazu sind sehr willkommen!

MfG

Sebastian
 
Windows XP, XProfan/Profan² 4.5 bis 11
Profan2Cpp-Homepage:  [...] 
Alte Profan²-Seite:  [...] 
29.12.2006  
 



Und weil das Thema sau klasse ist habe ich mich gestern mal rangesetzt und eine Klasse draus gebaut.

Ich habe aber auch noch was anderes verbrochen... ich hab das Anliegen genutzt um eine neue XPSE-Funktionalität ausgiebig zu testen. Die Klasse liegt also in einem verbrecherischem XPSE-Stil vor - würde mich nicht wundern wenn ich wieder so einige Nackenschläge bekomme

Ich zumindest werde die Class nutzen.

28 kB
Kurzbeschreibung: this mLibClass requires xpse >= V0.1.6zm
Hochgeladen:29.12.2006
Ladeanzahl145
Herunterladen
 
29.12.2006  
 




Frank
Abbing
[quote:a103efd1fa]Ist natürlich nur eine Idee - weitere Gedanken dazu sind sehr willkommen! [/quote:a103efd1fa]
Du hast den Quellcode selber erstellt, Sebastian. Der Copyright an dem Quelltext liegt bei dir. Selbst wenn du dich am originalen Quelltext orientiert hast, ändert das nichts daran, dass du den Code von Grund auf selber erstellt hast.
 
29.12.2006  
 




Sebastian
König
[quote:9a4a562957=Frank Abbing]Du hast den Quellcode selber erstellt, Sebastian. Der Copyright an dem Quelltext liegt bei dir. Selbst wenn du dich am originalen Quelltext orientiert hast, ändert das nichts daran, dass du den Code von Grund auf selber erstellt hast. [/quote:9a4a562957]
Hmm... ich weiß nicht, ob das wirklich so einfach ist. Eigentlich denke ich schon, dass die Übersetzung in eine andere Sprache ein vom ursprünglichen Programm abgeleitetes Werk darstellt und somit wie der Ausgangscode unter die LGPL fällt.

Aber wie schon gesagt, wenn man zusammen mit dem Programm, das die MemoryModule.inc nutzt, den Code als PRC und eine PCU-Version der Inc zur Verfügung stellt, müssten die Anforderungen IMHO eigentlich erfüllt sein.

Viel einfacher und klarer wäre die Situation natürlich, wenn der Code als DLL vorläge - aber das ist in diesem speziellen Fall natürlich recht sinnlos...

MfG

Sebastian
 
Windows XP, XProfan/Profan² 4.5 bis 11
Profan2Cpp-Homepage:  [...] 
Alte Profan²-Seite:  [...] 
29.12.2006  
 




Frank
Abbing
[quote:4acc38eb18]Viel einfacher und klarer wäre die Situation natürlich, wenn der Code als DLL vorläge - aber das ist in diesem speziellen Fall natürlich recht sinnlos... [/quote:4acc38eb18]
Wohl wahr...
 
29.12.2006  
 



@Sebastian
Nutze doch einfach Version 0.0.2 anstatt 0.0.1, wobei ich die Unterschiede garnicht gefunden habe. Die fällt unter Modzilla Lizens, welche besser geeignet sein sollte

Gruß
Thomas
 
29.12.2006  
 




Sebastian
König
Hallo Thomas,

[quote:9885ddb119=TS-Soft]@Sebastian
Nutze doch einfach Version 0.0.2 anstatt 0.0.1, wobei ich die Unterschiede garnicht gefunden habe. Die fällt unter Modzilla Lizens, welche besser geeignet sein sollte [/quote:9885ddb119]
super - danke für den Hinweis! So wie ich das gerade gelesen habe, bestehen die Probleme mit der weniger restriktiven MPL (Mozilla Public License) tatsächlich nicht.

Ich werde den Code also so anpassen, dass er eine Übersetzung der Version 0.0.2 darstellt und ihn dann nachher hier posten .

MfG

Sebastian
 
Windows XP, XProfan/Profan² 4.5 bis 11
Profan2Cpp-Homepage:  [...] 
Alte Profan²-Seite:  [...] 
30.12.2006  
 




Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

38.861 Betrachtungen

Unbenanntvor 0 min.
Jens-Arne Reumschüssel28.05.2023
H.Brill30.04.2023
iF01.11.2020
p.specht12.06.2020
Mehr...

Themeninformationen



Admins  |  AGB  |  Anwendungen  |  Autoren  |  Chat  |  Datenschutz  |  Download  |  Eingangshalle  |  Hilfe  |  Händlerportal  |  Impressum  |  Mart  |  Schnittstellen  |  SDK  |  Services  |  Spiele  |  Suche  |  Support

Ein Projekt aller XProfaner, die es gibt!


Mein XProfan
Private Nachrichten
Eigenes Ablageforum
Themen-Merkliste
Eigene Beiträge
Eigene Themen
Zwischenablage
Abmelden
 Deutsch English Français Español Italia
Übersetzungen

Datenschutz


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie