*.dll oder *.exe



  • Original erstellt von rapso:
    tja und linux ist so furchtbar dumm dass es quasi nur aus dlls besteht.. denn soweit ich weiß kann man jedes modul laden und die exportieren funktionen nutzen... 🙂

    tja, da besteht ja wohl ein kleiner unterschied, ob du ein bs hast, das über tausend leute benutzen, wo es lächerlich wäre, man müßte fürs einstecken einer maus erstmal das bs neu compilieren, und ob du libs anbietest, die von 20 prozessen zugleich verwendet werden, oder obs nur ne grafik-engine ist, die sich nicht auf dem markt durchsetzen wird und die nie von mehr als einem programm gleichzeitig benutzt werden soll.



  • volkard bringt's mal wieder auf den Punkt! 🙂



  • Hey, wenn man so denkt dann braucht man weder DLL noch Lib sondern kann den Quellcode direkt in sein Projekt übernehmen 😮 😮



  • Original erstellt von <egg>:
    Hey, wenn man so denkt dann braucht man weder DLL noch Lib sondern kann den Quellcode direkt in sein Projekt übernehmen 😮 😮

    die compilezeiten wären zu lang. und für ganz verschiedene sachen soll man auch ganz verschiedene verzeichnisse haben. immerhin soll die lib für alle zukünftigen games ja auch genommen werden können. mit ein paar klicks ist die lib drin, ganz ohne kopieren. und verbesserungen, die man macht, während man an einem spiel schraubt, bringen das andere auch voran. verschiedene muduln sind schon toll.


  • Mod

    hmm.. wenn man davon immer ausgeht dass nur lamer hier fragen die es eh nie dazu bringen dass sie ne engine schreiben, die jemand verwendet, dann könnte man denen von vornhinein sagen dass sie es lassen sollen.

    und wenn man etwas codet und es nur einmal verwenden will, dann braucht man auch keine statische lib, dann braucht man keine wirkliche modulisierung, denn wozu? reicht wenn man namespaces und klassen hat und wenn es fertig ist, dann mit dem spiel zusammen.

    wenn man wirklich eine engine erstellt, dann besteht der core nur aus grundfunktionalität und erst durch weitere module, die man dann als plugins gestalltet, erstellt man das was die grafik zeichnet oder die kollision testet und was texturen dekomprimiert.
    bei meiner engine muss ich nur eine dll aus dem standart framework erstellen und in die nötigen verzeichnisse packen, schon unterstützt der textureditor, leveleditor und die engine selber ein neues dateiformat und dank pluginmanager kann ich jedes dieser dateiformate in allen anderen aplikationen nutzen, egal ob screengrabber, imageconverter oder grafiker-script. wenn ich aber vorher die lib in jedes modul statisch einbauen würde, wäre ich ewig am durchcompilieren und linken (dauert bei den engines an denen ich arbeite schonmal ne ganze nacht, wenn es auf nur einem rechner läuft bzw laufen würde).

    ich finde man sollte von anfang an richtig mit den *.dlls umgehen können, ansonsten klingt es für mich so wie leute die sagen dass man für spiele nur c und asm anstatt c++ nutzen sollte, weil es schneller ist oder weniger probleme gibt.. und blos keine templates, denn die sind sowieso evil..

    statische libs würde ich nur für kleine module nutzen, z.B. gibt es ein paar mathlibs von AMD mit 3dnow optimiertem code oder eine kleine compressions libs z.B. bz2

    rapso->greets();

    ps. früher war ich auch unwillig dlls zu nutzen, aber heute kann ich mir nicht vorstellen dass in den firmen die ich kenne ein workflow möglich wäre, wenn alle alles statisch linken, alleine schon dadurch, dass erst interfaces erstellt und verteilt werden ohne funktionalität und es trotzdem möglich ist durch zu kompilieren ohne dass man auf nen anderen warten muss, der die woche lang urlaub hat... aber sicher, für eine person ohne ausblick auf zukünftige arbeit reicht auch statisches linken oder gar keine modulisierug, da geb ich jedem recht.



  • also ihr könnt neue dlls kriegen, obwohl der erteller in urlaub ist, aber neue libs gehen nicht?
    ach nein, es ist die möglichkeit, bewußt mit ner alten dll zu leben, obwohl schon neue header verteilt sind? das ginge mit ner lib natürlich nicht. außer, man macht es einfach.
    blödsinn. auch bei libs soll und muß man die inkludeabhängigkeiten reduzieren. während der entwicklung überall pimpl-idiom.
    aber ich geb dir recht, daß bei kaputten libs, bei jeder änderung ne nacht lang compilieren dlls klar besser sind. die kann man löschen und man merkts erst tage später, wenn man glück hat.

    zum anfang:

    ich stell mir die Frage ob ich meine Engine in eine DLL tun soll oder sie in der exe drin lassen soll. Was meint ihr dazu?

    ich meine, daß dll hier unfug ist. wenn die lib mal an viele leute weitergegeben werden soll, ist lib immernoch gut. und wenn du ne dll draus machen magst, weils cooler ist, kannste das auch immernoch machen. aber bis dahin spar die den mist besser. hauptaugenmerk soll bei der entwicklung der engine liegen, und nicht bei fallstricken um dlls.

    [ Dieser Beitrag wurde am 01.04.2003 um 23:09 Uhr von volkard editiert. ]


  • Mod

    mein fazit ist wäre anders:
    wenn du dich gegen eine dll entscheidest, bloss weil du glaubst, dass du mit den problemen nicht klarkommst die damit auftretten könnten, dann wirst du dein ganzes dasein als programmierer entweder hassen oder auf unterster ebene verbringen.
    irgendwann wirst du unkompliziert etwas tauschen wollen z.B. eine dll die debuginformationen ausgibt oder dir alles im wireframe anzeigt, in einer datei logt oder einen http server bietet der dir statusinformationen anzeigt z.B. über die polygonezahl oder objektmenge, dann wirst du es genießen einfach nur zwei dlls umzubenennen und nicht irgendwelche tools die man erstellt neu kompilieren zu müssen.

    sicher dauert es ein wenig bis man mit dlls nützlich umgehen kann, aber am ende sparen sie viel arbeit... aber das ist mit allen techs so.

    rapso->greets();


Anmelden zum Antworten