Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

FreezingEngine

Treue Seele

  • »FreezingEngine« ist der Autor dieses Themas

Beiträge: 280

Wohnort: NRW

Beruf: Schüler

  • Private Nachricht senden

1

16.09.2012, 22:54

Source Code in .lib kompilieren ?

Hallo liebe Community,

ich hätte da mal eine kleine Frage.
Also ich habe mir eine GUI geschrieben die ich bisher noch
als normale cpp und hpp datein vorliegen habe.
Ich möchte meine GUI einigen Freunden schicken, will aber nicht das mein
Sourcecode ohne weiteres sichtbar ist.
meine Frage ist wie kann ich diese GUI als .lib kompilieren?
Was ich meine ist die so fertigzustellen das man sie wie die SFML einbinden
kann also Includeverzeichnisse angeben , Bibliotheksverzeichnisse
und schließlich linken.

MfG Marcel. :hmm:
"He who sacrifices freedom for security deserves neither."
Benjamin Franklin

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

2

17.09.2012, 09:32

Warum willst du nicht, dass dein Sourcecode sichtbar ist? Hattest du schonmal die "schöne" Aufgabe dich in fremden Source einzulesen? Falls nicht: glaube mir es ist ne Qual. Und ja das geht ohne weiteres. Denn der Sinn von Libs ist, dass man das Kompilat ohne weiteres einbinden kann ohne das ein neukompilieren etc. notwendig ist (und damit auch die Existenz des Source). Aber zumindest die Header sollten dabei sein.
PRO Lernkurs "Wie benutze ich eine Doku richtig"!
CONTRA lasst mal die anderen machen!
networklibbenc - Netzwerklibs im Vergleich | syncsys - Netzwerk lib (MMO-ready) | Schleichfahrt Remake | Firegalaxy | Sammelsurium rund um FPGA&Co.

birdfreeyahoo

Alter Hase

Beiträge: 756

Wohnort: Schorndorf

Beruf: Junior Software Engineer

  • Private Nachricht senden

3

17.09.2012, 17:33

Die Header kann man auch als eine Art Dokumentation sehen, also dass man alle Funktionen hat. Ich weiß nicht wie das anders gehen soll, da die Bezeichner dem Compiler ja nicht klargemacht werden können weil eine .lib kompiliert ist.

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

4

17.09.2012, 18:47

Geht auch ohne (mitgelieferte) Header, macht aber kein Spass (man kann die in einer Bibliothek vorhandenen Einsprungpunkte nachträglich extrahieren). Aber wie gesagt. Im Normalfall kann man auch einfach den gesamten Source abliefern. Die wenigsten interessieren sich wirklich für die internen Abläufe und die die es interessiert könnten es auch einfach nachprogrammieren (ohne Sourcevorlage).
PRO Lernkurs "Wie benutze ich eine Doku richtig"!
CONTRA lasst mal die anderen machen!
networklibbenc - Netzwerklibs im Vergleich | syncsys - Netzwerk lib (MMO-ready) | Schleichfahrt Remake | Firegalaxy | Sammelsurium rund um FPGA&Co.

FSA

Community-Fossil

  • Private Nachricht senden

5

17.09.2012, 20:43

@Nox: Ich verstehe nicht genau wie das gehen soll... Wie kann man eine Bibliothek benutzen, ohne die Header zu inkludieren?

Zitat

Der RCCSWU (RandomCamelCaseSomtimesWithUndersquare) Stil bricht auch mal mit den veraltet strukturierten Denkmustern und erlaubt dem Entwickler seine Kreativität zu entfalten.

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

6

18.09.2012, 13:08

Ich sprach von fehlenden mitgelieferten Headern ;) . Unter msvc ist z.B. "dumpbin -all -out:report.txt [dateidieuntersuchtwerdensoll]" ein Ansatz. Alternativ gibt es z.B. http://www.codeproject.com/Articles/9310…l-to-view-a-LIB . Im Allgemeinen ist google immer sehr hilfsbereit in solchen Fällen.
Es geht schon macht aber wenig Spass sich selbst die entsprechenden Definition extrahieren zu müssen.

P.S: Achja, für DLLs bzw .so sollte es auf der Hand liegen wie es ohne Header geht.
PRO Lernkurs "Wie benutze ich eine Doku richtig"!
CONTRA lasst mal die anderen machen!
networklibbenc - Netzwerklibs im Vergleich | syncsys - Netzwerk lib (MMO-ready) | Schleichfahrt Remake | Firegalaxy | Sammelsurium rund um FPGA&Co.

FreezingEngine

Treue Seele

  • »FreezingEngine« ist der Autor dieses Themas

Beiträge: 280

Wohnort: NRW

Beruf: Schüler

  • Private Nachricht senden

7

18.09.2012, 14:50

Ich hätte auch gleich mal ne nächste frage .

sagen wir ich hab die klasse button die von der klasse panel erbt sollte man im konstruktor vom button

button::setPosition aufrufen oder nur
setPosition?

oder ist das im grunde egal?
"He who sacrifices freedom for security deserves neither."
Benjamin Franklin

8

18.09.2012, 16:37

In deinem Fall würde "setPosition" reichen, da automatisch die Funktion der Unterklasse aufgerufen wird. Die andere Möglichkeit würde aber auch funktionieren.
Wenn du aber die setPosition-Funktion der Oberklasse aufrufen willst musst du es aber auf jeden Fall extra angeben (also in deinem Fall "panel::setPosition").
Hast du die Funktion in der Unterklasse gar nicht neu implementiert, würde automatisch die Funktion der Klasse panel aufgerufen, auch wenn du nur "setPosition" schreibst.

9

18.09.2012, 18:25

meine Frage ist wie kann ich diese GUI als .lib kompilieren?
Was ich meine ist die so fertigzustellen das man sie wie die SFML einbinden
kann also Includeverzeichnisse angeben , Bibliotheksverzeichnisse
und schließlich linken.

Du kannst in den Compileroptionen einstellen, ob du eine Anwendung, eine statische oder eine dynamische Bibliothek erstellen möchtest. In deinem Falle wäre das dann eine statische Bibliothek. Dann bekommst du eine .lib Datei statt einer .exe. Diese musst du dann im anderen Projekt bei den Linkeroptionen eintragen.
Lieber dumm fragen, als dumm bleiben!

birdfreeyahoo

Alter Hase

Beiträge: 756

Wohnort: Schorndorf

Beruf: Junior Software Engineer

  • Private Nachricht senden

10

18.09.2012, 23:49

Wenn du .dll einstellst, kriegst du bei einer .cpp mit Code auch eine .lib raus, die nur für das Builden benötigt wird. Anstatt, dass die .exe erweiter wird, bindet man die .dll ein.

Werbeanzeige