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

1

26.11.2013, 20:05

OpenGL in statischer Bibliothek

Liebe Community,

ich bin heute auf ein interessantes Problem gestoßen: wie implementiert man OpenGL bzw. dessen Kontext-Erstellung in einer statischen Bibliothek? Soweit ich weiß können statische Bibliotheken nicht auf externe Symbole verweisen, da sie ja keine Daten mitbringen, welche anderen Libraries benötigt werden. Jetzt habe ich aber eine statische Bibliothek, die mittels wglCreateContext einen Kontext erstellen will, linke diese mit OpenGL32.lib und alles sollte problemlos kompilieren (sofern keine Fehler im Code sind). Wenn ich diese Bibliothek allerdings in einem Projekt linken würde, bekäme ich einen Fehler "unresolved external symbol wglCreateContext", da dieses Projekt nicht automatisch OpenGL32.lib linkt. Jetzt die Frage: Wie machen es SFML, und co., dass man sie zwar statisch verwenden kann, allerdings nicht explizit OpenGL32.lib linken muss?

Ich habe OpenGL noch nie in einer statischen Bibliothek verwendet, daher ist das mehr eine theoretische Frage.

Liebe Grüße,
~ EuadeLuxe ~

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

2

26.11.2013, 20:14

Wie machen es SFML, und co., dass man sie zwar statisch verwenden kann, allerdings nicht explizit OpenGL32.lib linken muss?

http://en.sfml-dev.org/forums/index.php?topic=12793.0

3

26.11.2013, 20:24

Und wie heißt diese Funktion von VS, um die statischen Bibliotheken zu "verschmelzen"? Bzw. macht VS das automatisch?

5

26.11.2013, 20:29

Danke dir ;)

Noch eine Frage: Angenommen man würde einen anderen Compiler verwenden, so könnte man wahrscheinlich nicht LIB.EXE benutzen. Wie macht man das dann bei anderen Compilern? LIB.EXE muss das ja auch irgendwie bewerkstelligen....

#EDIT: Hat sich geklärt, danke dir ;)

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

6

26.11.2013, 20:34

Ersetze in meiner oben genannten Suchanfrage das "Visual C++" durch den Compiler deiner Wahl.

7

26.11.2013, 20:45

Fällt - lizenztechnisch gesehen - das eigentlich unter "benutzen" oder unter "fusionieren"?

Tobiking

1x Rätselkönig

  • Private Nachricht senden

8

26.11.2013, 22:25

Fällt - lizenztechnisch gesehen - das eigentlich unter "benutzen" oder unter "fusionieren"?

Der LGPL nach ist die Bedingung für "benutzen" das die Fremdbibliothek ausgetauscht werden kann. Wenn die Bibliotheken statisch zusammen gelinkt wurden, ist das in der Regel nicht mehr möglich und entsprechend nicht erfüllt.

Du kannst aber deine Bibliothek zusätzlich alleinstehend anbieten. Damit ermöglichst du das Verwenden deiner Bibliothek mit einer anderen Version der Fremdbibliothek und erfüllst die LGPL (Siehe Paragraph 5).

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

9

27.11.2013, 06:36

Statisch linken wird fast nie als nur "benutzen" verstanden.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

Werbeanzeige