Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
TheMillenium Dark JLI'ler
Anmeldedatum: 21.07.2002 Beiträge: 1427 Wohnort: World Medaillen: Keine
|
Verfasst am: 03.08.2004, 15:58 Titel: LIB erstellen? |
|
|
Ich habe das Topic "DLL erstellen" verfolgt und hab mir dann vorgestellt wie schön es doch wäre, wenn ich eine neue Engine programmiere, die in eine DLL einzubauen. Bei dem Spiel selber, einfach die DLL Laden, paar Funktionen erstellen: PreFrame(); Frame(); und PostFrame(); und da könnte ich alles reinpacken. Hab dann aber gelesen, dass DLL Aufrufe von der längeren Dauer der Aufrufe nur für normale Windows Anwendungen zu empfehlen sind. Dann müssten LIBS, die wir ja auch im mit DX einbinden deutlich schneller sein...Wenn man mit Google aber nach Tutorials nach Libs sucht, finde ich aber keine...
Ist das dann fast genauso schnell wenn ich ne LIB einbinde, als wenn ich den ganzen Code in der LIB in meinem Projekt als Module aufgteilt hätte?
Wie erstelle ich Libs?
Und gibt es eine Möglichkeit, die Funktionen in den Libs noch zu überladen, wenn ich solche Rechte setzten kann? Oder muss ich die LIB dann nochmal neukompilieren?
Wie man sieht kenne ich mich mit dem Thema noch gar nicht aus...
Ich hoffe aber, dass sich das bald ändert!  _________________ The source of all power is in its destiny... |
|
Nach oben |
|
 |
Fallen JLI MVP


Alter: 41 Anmeldedatum: 08.03.2003 Beiträge: 2860 Wohnort: Münster Medaillen: 1 (mehr...)
|
Verfasst am: 03.08.2004, 16:03 Titel: |
|
|
Wenn du nur ne lib und ne h bei dir einbinden willst damit es funktioniert (wie bei fmod oder directx) dann hier:
http://www.codeproject.com/cpp/libfromdll.asp _________________ "I have a Core2Quad at 3.2GHz, 4GB of RAM at 1066 and an Nvidia 8800 GTS 512 on Vista64 and this game runs like ass whereas everything else I own runs like melted butter over a smokin' hot 18 year old catholic schoolgirl's arse." |
|
Nach oben |
|
 |
Jonathan_Klein Living Legend

Alter: 37 Anmeldedatum: 17.02.2003 Beiträge: 3433 Wohnort: Siegerland Medaillen: Keine
|
Verfasst am: 03.08.2004, 16:34 Titel: |
|
|
also normale libs, die die keine dll haben, sind einfach nur vorkompilierte Dateien die der Linker dann zu den andern dazu packt. Warum man die libs bei dll's braucht weiß ich nicht so genau, vieleicht stehen da ja Infos über die dll drin. _________________ https://jonathank.de/games/ |
|
Nach oben |
|
 |
Chewie Super JLI'ler
Anmeldedatum: 17.07.2003 Beiträge: 382
Medaillen: Keine
|
Verfasst am: 03.08.2004, 17:44 Titel: |
|
|
Jonathan_Klein hat Folgendes geschrieben: | Warum man die libs bei dll's braucht weiß ich nicht so genau, vieleicht stehen da ja Infos über die dll drin. |
so ist das, glaub ich. ich denke, die lib braucht der compiler/linker beim entwickeln, und die fertige dll wird dann von der ausführbaren datei benötigt. sprich, nur mit einer lib kann man glaub ich nichts angfangen.
die alternative wäre eine static library, wo die dll praktisch in die ausführbare datei hineingepackt wird. pack deine engine stinknormal in eine dll, schließlich machts dx auch so. |
|
Nach oben |
|
 |
TheMillenium Dark JLI'ler
Anmeldedatum: 21.07.2002 Beiträge: 1427 Wohnort: World Medaillen: Keine
|
Verfasst am: 03.08.2004, 19:57 Titel: |
|
|
DX macht das doch mit Libs?
Auf jeden Fall im Compiler...
Allerdings werden bei der DX Installation (nicht SDK) auch DLLs installiert...mich würde nur interessieren, wieviel langsamer diese Version ist....mit Lib & Dll gegenüber der alles in einem Projekt, Engine von eigenem Spiel nicht richtig getrennt Variante... _________________ The source of all power is in its destiny... |
|
Nach oben |
|
 |
Chewie Super JLI'ler
Anmeldedatum: 17.07.2003 Beiträge: 382
Medaillen: Keine
|
Verfasst am: 03.08.2004, 20:16 Titel: |
|
|
die dx runtime besteht nur aus dlls. da is keine einzige lib dabei. wie gesagt, mit einer lib kann ein programm nichts anfangen, die braucht nur der compiler in irgendeiner art und weise. |
|
Nach oben |
|
 |
The Lord of Programming Living Legend

Alter: 37 Anmeldedatum: 14.03.2003 Beiträge: 3122
Medaillen: Keine
|
Verfasst am: 03.08.2004, 21:37 Titel: |
|
|
Ist das für eine Lib nicht genau die selbe Prozedur wie für eine DLL?
Also was ich gelesen habe, erstellt man eine .lib-Datei und eine .dll gleichzeitig. Dann kann man eben auswählen, ob mans lieber dynamisch(dll) oder statisch bzw. über die Linkereinstellungen(lib) haben will.
Das stand doch sogar auf der Seite, die jemand in dem DLL-Thread gepostet hat  _________________ www.visualgamesentertainment.net
Current projects: RDTDC(1), JLI-Vor-Projekt, Tetris(-Tutorial), JLI-Format
(1) Realtime Developer Testing and Debugging Console
Anschlag, Anleitung zum Atombombenbau, Sprengkörper...
Hilf Schäuble! Damit er auch was findet... |
|
Nach oben |
|
 |
Sören JLI Master Trainee

Anmeldedatum: 26.07.2002 Beiträge: 647 Wohnort: Bonn Medaillen: Keine
|
Verfasst am: 04.08.2004, 02:05 Titel: |
|
|
Jonathan_Klein hat Folgendes geschrieben: | also normale libs, die die keine dll haben, sind einfach nur vorkompilierte Dateien die der Linker dann zu den andern dazu packt. Warum man die libs bei dll's braucht weiß ich nicht so genau, vieleicht stehen da ja Infos über die dll drin. |
Der Sinn der Sache ist, das man den kompilierte Code von mehreren Anwendungen aus laden können soll. zB: du hast ein spiel und einen leveleditor, nun könntest du die Klassen die beide benutzen in eine DLL packen und beide können ihnen nutzen, ohne dass er quasi doppelt existiert.
Die lib braucht man sozusagen für das eigene Programm, damit es "weiß" was es benutzt(also zum kompilieren).
Die lib enthält quasi die gesamte "Aufstellung" der Klassen und Funktionen der dll. |
|
Nach oben |
|
 |
TheMillenium Dark JLI'ler
Anmeldedatum: 21.07.2002 Beiträge: 1427 Wohnort: World Medaillen: Keine
|
Verfasst am: 04.08.2004, 07:41 Titel: |
|
|
Ich habe gedacht sowas würde schon durch den Header gelöst? _________________ The source of all power is in its destiny... |
|
Nach oben |
|
 |
fowly JLI'ler

Anmeldedatum: 25.01.2004 Beiträge: 196 Wohnort: Detmold - NRW Medaillen: Keine
|
Verfasst am: 04.08.2004, 09:20 Titel: |
|
|
TheMillenium hat Folgendes geschrieben: | Ich habe gedacht sowas würde schon durch den Header gelöst? |
ja, aber dann musst du ja die klassen die du doppelt benutzt auch doppelt kompilieren, und die machen auch zweimal die exe größer. bei der dll sind die sachen die beide anwendungen brauchen eben ausgelagert und die beiden exes sind kleiner. _________________ <-- Noch in der Entwicklungsphase: http://www.uranus-entertainment.de -->
Das Spiel zu unserer Schule:
http://www.grabbe-game.de |
|
Nach oben |
|
 |
TheMillenium Dark JLI'ler
Anmeldedatum: 21.07.2002 Beiträge: 1427 Wohnort: World Medaillen: Keine
|
Verfasst am: 04.08.2004, 09:26 Titel: |
|
|
Wenn ich nur den Header einbinde? _________________ The source of all power is in its destiny... |
|
Nach oben |
|
 |
fowly JLI'ler

Anmeldedatum: 25.01.2004 Beiträge: 196 Wohnort: Detmold - NRW Medaillen: Keine
|
|
Nach oben |
|
 |
C++Builder Senior JLI'ler

Anmeldedatum: 04.10.2003 Beiträge: 235
Medaillen: Keine
|
Verfasst am: 08.08.2004, 11:58 Titel: |
|
|
Dann hast du ja nur die Prototypen der Funktionen und der Funktionsrumpf fehlt. Der steht nämlich in der .lib.
In der DX-Runtime sind nur DLL's weil DX-Spiele die brauchen. Aber um Spiele damit zu entwickeln brauchst du die .lib's. Schließlich schreibst du bei nem neuen Projekt ja in Projekt->Einstellungen-> Linker->Objekt-/Biliothek-Module: d3d.lib und dinput8.lib und so dazu oder irre ich?
In der Lib steht dann praktisch das drinne was du normaler weise in die .cpp schreibst. Dann includierst du die .h in dein Projekt fügst die .lib zu deinem Projekt hinzu und compilierst. Wenn du jetzt dein Programm starten willst wird die DLL benötigt die so heißt wie die Lib also brauchst du d3d.dll und dinput8.dll nur sind die in irgend einem Systemordner und du die findet Windoof von alleine. |
|
Nach oben |
|
 |
TheMillenium Dark JLI'ler
Anmeldedatum: 21.07.2002 Beiträge: 1427 Wohnort: World Medaillen: Keine
|
Verfasst am: 08.08.2004, 13:13 Titel: |
|
|
Ja, das hab ich befürchtet.
Irgendwann hab ich mal als Test sowas gemacht und brauchte keine blöde dlll...
Gibt es keine Möglichkeit dass sich die (lib und dll) mit der exe "verschmilzt"?
Ich will einfach statt tausend cpps und hs einzubinden einfach nur eine Datei einbinden. Dann ist es viel übersichtlicher und es ist nicht möglich im "Core" ausversehen den Code zu ändern. _________________ The source of all power is in its destiny... |
|
Nach oben |
|
 |
Sören JLI Master Trainee

Anmeldedatum: 26.07.2002 Beiträge: 647 Wohnort: Bonn Medaillen: Keine
|
Verfasst am: 08.08.2004, 13:25 Titel: |
|
|
TheMillenium hat Folgendes geschrieben: | Ja, das hab ich befürchtet.
Irgendwann hab ich mal als Test sowas gemacht und brauchte keine blöde dlll...
|
Wenn du nur eine lib haben willst, brauchst du keine dll. Aber wenn du eine dll haben willst brauchst du eine lib. Verstanden?  |
|
Nach oben |
|
 |
|