Was haltet ihr von Dlls?

Übersicht Sonstiges Smalltalk

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen

Lord Stweccys

Betreff: Was haltet ihr von Dlls?

BeitragSa, Jan 08, 2011 17:25
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja es ist eine simple Frage, aber für mein jetziges Projekt möchte ich gerne von euch wissen:

Was haltet ihr von DLLs Question

Nennt mir Vor- und Nachteile, sagt, was euch an ihnen stört und was ihr gut findet.


Danke schon mal,

Mfg,
LordSt

BtbN

BeitragSa, Jan 08, 2011 18:30
Antworten mit Zitat
Benutzer-Profile anzeigen
Keine Ahnung, wie man von DLLs was halten soll, aber deine Vorteile/Nachteile findest du auf Wikipedia:
http://de.wikipedia.org/wiki/Dynamic_Link_Library

Lord Stweccys

BeitragSa, Jan 08, 2011 18:34
Antworten mit Zitat
Benutzer-Profile anzeigen
So schlau war ich auch schon, bei Wikipedia nach zu schauen. Ich wollte eigentlich wissen, ob ihr persönlich noch
irgendwelche Gründe für oder gegen DLLs kennt.

(Hoffe das hier wird noch was Neutral )

BtbN

BeitragSa, Jan 08, 2011 18:35
Antworten mit Zitat
Benutzer-Profile anzeigen
Wie soll man das ohne kontext sagen können? Da es keine Alternative zur DLL, bzw. ihrer entsprechung des jeweiligen OS, gibt, kann man von den Dingern halten, was man will, sie sind nunmal das einzig zur verfügung stehende mittel, um Code dynamisch zu linken.

Eingeproggt

BeitragSa, Jan 08, 2011 18:58
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich nehm mal an, es geht dir um Funktionalitäten die Blitz nicht zur Verfügung stellt und die du mit DLLs mitliefern willst? (Da du keine Diskussionsgrundlage explizit nennst, nehm ich mal BB an, ist doch naheliegend Wink )

Ich bin ja dafür, so viel wie möglich intern zu machen. Also auch wenn eine DLL zB schnelleren Pixel-Zugriff bietet, würde ich trotzdem bei ReadPixelFast usw. bleiben. Und wenn es um die WinAPI geht dann würde ich mich sehr freuen, wenn du sie direkt nutzt, statt irgendwelche "Wrapper" zu benutzen, die sind (oft, nicht immer) ein ziemlich sinnloser Umweg.

Aber ja, es gibt Dinge die kann nur ne DLL liefern und dann... ja dann gib sie halt mit, was bleibt uns übrig? ^^

Was ich halt weniger mag sind so Projekte wo jemand glaubt er ist cool weil er möglichst viele DLLs benutzt um so Dinge wie Autostart-Eintrag oder SysTray-Icon zu bringen damit das Zeug "professionell" wird.

EDIT: Und wenn man DLLs mitgibt, dann bitte im Programmordner... NICHT in den System32-Ordner kopieren, da müllen sie doch nur das System zu weil die DLL von dort wahrscheinlich nie wieder raus kommt.

mfG, Christoph.
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9

Lord Stweccys

BeitragSa, Jan 08, 2011 19:01
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich arbeite grade an einer Alternative zu DLLs, deshalb habe ich ja auch diesen Thread eröffnet um das,
was "die Bevölkerung" an ihnen nervt in meiner Ausführung zu verbessern.

Ich plane, dass man diese Alternativ-DLLs auch in BlitzMax schreibt, allerdings werden die dann auf (theoretisch)
allen Platformen funktionieren ohne, dass sie nochmals ausgerechnet für diese OS kompiliert werden.
Zusätzlich werden diese Module noch unverschämt klein (Mein Test-Modul, welches zwei Zahlen addiert
ist grade mal 13 Bytes groß)
Ich hab schon ein paar kleinere Tests durchgeführt und bis jetzt klappt alles, doch bevor ich dieses Projekt
so richtig angehen wollte, wollte ich halt mal wissen, was man so an Features umsetzen kann und was sich
dann auch von stinknormalen DLLs abhebt

Edit: Ich rede von BlitzMax (sorry, das ich es vergessen habe zu erwähnen)

BtbN

BeitragSa, Jan 08, 2011 19:04
Antworten mit Zitat
Benutzer-Profile anzeigen
Naja, ich denke mal, dein Code wird dann nicht nativ ausgeführt werden, sondern eher in eine richtung script-sprache gehen? Das wäre für viele Anwendungs-Fälle viel zu langsam.
Ansonsten wüsste ich nicht, wie du den Platform-Spezifischen Code für alle OS in ein objekt unterbringen willst.
Wenn das gehen würde, wäre es eine sehr interessante Sache.

Lord Stweccys

BeitragSa, Jan 08, 2011 19:05
Antworten mit Zitat
Benutzer-Profile anzeigen
Doch, das ist es ja, das ganze arbeitet nativ und ist damit sogar verflucht schnell Very Happy

BtbN

BeitragSa, Jan 08, 2011 19:07
Antworten mit Zitat
Benutzer-Profile anzeigen
Wie genau stellst du das an, dass z.B. os-spezifische sachen, wie Beispielsweise Netzwerk-Zugriff u.Ä. ohne neu kompilieren überall laufen?

Lord Stweccys

BeitragSa, Jan 08, 2011 19:13
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja das wird dann natürlich die Hürde werden. Very Happy Aber das beschäftigt mich zuerst nicht,
die Grundmuster und so werden auf jeden Fall ohne irgendwelche Libs laufen und Netzwerksgesums
ist dann halt OS-spezifisch, da kann man nichts machen Very Happy
Aber dafür ist ja meine Lib auch gar nicht in erster Linie gedacht, sie ist eher für modulares, (platformunabhängiges) Programmieren,
das so schnell ist wie hardcoded, dafür aber deutlich flexibler.

Firstdeathmaker

BeitragSa, Jan 08, 2011 20:41
Antworten mit Zitat
Benutzer-Profile anzeigen
Kannst du mal ein paar Details nennen wie du das erreichst? Würd mich sehr interessieren...
www.illusion-games.de
Space War 3 | Space Race | Galaxy on Fire | Razoon
Gewinner des BCC #57 User posted image

Lord Stweccys

BeitragSa, Jan 08, 2011 20:53
Antworten mit Zitat
Benutzer-Profile anzeigen
Naja, ihr wisst doch alle, dass BlitzMax in Assembler konvertiert wird und ich habe mich in den
letzten Tagen stark mit Assembler und BlitzMax beschäftigt und diese alte Idee, von der ich schon mal Thunder erzählt hab,
wieder aufgegriffen:

Zuerst schreibt man in Assembler eine kleine Funktion, z.B.

Code: [AUSKLAPPEN]
use32
_Funktion:
mov eax,42
ret


Das ganze kann man einfach in eine .bin-Datei kompilieren.
Diese Datei kann man mit MemAlloc() in den Speicher laden und die Adresse auf einen Funktionspointer ziehen.

Voila! Ruft man die Funktion auf, ruft man den eingeschleusten Code auf.

Das ist die Grundidee.

biggicekey

BeitragSa, Jan 08, 2011 20:55
Antworten mit Zitat
Benutzer-Profile anzeigen
ich finde die riechen komisch
#45 www.icekeyunlimited.de www.starcrusade.de
Gewinner BCC#17 !!! mit dotkiller
Nothing more to register - you've cleaned us out![/size]

Lord Stweccys

BeitragSa, Jan 08, 2011 20:56
Antworten mit Zitat
Benutzer-Profile anzeigen
@biggicekey: Stimmt, das ist auch ein gutes Argument Very Happy

Thunder

BeitragSa, Jan 08, 2011 21:13
Antworten mit Zitat
Benutzer-Profile anzeigen
Das was du, glaube ich, übersiehst ist, dass man shared libs, nicht wegen inkompatiblen Assemblercode sondern wegen inkompatiblen Dateiformaten neukompiliert werden müssen.
Außerdem sind DLLs eben shared libraries, d.h. sie können von mehreren Programmen verwendet werden, ohne mehrfach geladen sein zu müssen.

Wenn du es trotzdem ausprobieren willst (ich spreche nicht gegen so ein Projekt, weil ich zumindest sehr viel Spaß daran habe, etwas in BlitzMax rumzuhacken) musst du beachten, dass du eine Symboltable brauchst und eine Funktion die, die Funktionszeiger aus BlitzMax auf die FakeDLL-Funktionen umleiten.
Ein Problem könntest du noch haben: Far-Pointer brauchen die Offsetadresse an die, die FakeDLL geladen wurde. Die weiß die FakeDLL nicht. Windows macht das so, dass die DLL an ein Standardoffset gebunden wird (Assemblerbefehl org). Wenn sie nicht an das Offset geladen werden kann, wird die ganze DLL relocated (so einen Relocator schreiben kann ganz schön schwer werden).
Meine Sachen: https://bitbucket.org/chtisgit https://github.com/chtisgit

Lord Stweccys

BeitragSo, Jan 09, 2011 11:23
Antworten mit Zitat
Benutzer-Profile anzeigen
Da habe ich mir natürlich auch schon Gedanken gemacht Very Happy

Die Symboltabelle existiert in meinem Kopf schon d.h., ich habe schon eine genaue Idee des Aufbaus meines Formats.
Das mit dem Offset war ein Problem, das theoretisch schon behoben ist, weil ich eine Idee für einen Algo hab,
der automatisch Pointer im Code entdeckt und sie mit dem Offset des Moduls addiert.

Was ist ein Relocator?
 

CO2

ehemals "SirMO"

BeitragSo, Jan 09, 2011 12:49
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich finde sie nicht gut, weil ich nicht weiß, wie man sie schreibt Confused

Hab schon etliche tuts durchgemacht, verstehe es aber trotzdem nicht Sad
mfG, CO²

Sprachen: BlitzMax, C, C++, C#, Java
Hardware: Windows 7 Ultimate 64-Bit, AMX FX-6350 (6x3,9 GHz), 32 GB RAM, Nvidia GeForce GTX 750 Ti

Lord Stweccys

BeitragSo, Jan 09, 2011 13:09
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich versuche es bei meiner Version so einfach, wie möglich zu halten.

Habe mir das so vorgestellt, dass man einfach Funktionen definiert und in dem Hauptprogramm
dann eine Funktion aufruft, die den Code filtert, kompiliert und dann zu einer Bibliothek zusammenfasst.

Nun ja, das ganze ist noch Theorie, werde heute aber mal mit dem Programmieren beginnen und wenn
es erste Berichte gibt, kann ich vielleicht auch einen Worklog eröffnen.

Mfg,
LordSt

ozzi789

BeitragSo, Jan 09, 2011 13:59
Antworten mit Zitat
Benutzer-Profile anzeigen
Stichwort DLL HELL Twisted Evil
0x2B || ! 0x2B
C# | C++13 | Java 7 | PHP 5

hazumu-kun

BeitragSo, Jan 09, 2011 16:52
Antworten mit Zitat
Benutzer-Profile anzeigen
Du willst also praktisch code manuell in den speicher laden und dann per Funktionspointer ausführen?
Mich juckts grade das in C++ irgendwie zu versuchen :/
Warum kann es keine omnipotente Macht geben?
Weil diese omnipotente Macht in der Lage sein müsste, einen so schweren Stein zu schaffen, dass sie ihn nicht heben kann
-> nicht omnipotent

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen


Übersicht Sonstiges Smalltalk

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group