Seite 1 von 1

[SFML] Linker-Warnungen mit statischem Linken

Verfasst: 14.11.2012, 00:03
von BeRsErKeR
Hallo ich wollte die SFML statisch linken, was auch problemlos geht. Allerdings hab ich keine PDB-Files für SMFL und die will ich auch eigentlich gar nicht haben, da ich nicht unbedingt im SFML-Code debuggen will. Das nervige sind nun aber die ganzen LNK4099-Warnungen vom VS (übrigens noch 2008, sollte aber recht egal sein). Zu Urzeiten (VS6.0) gabs mal Linkeroptionen wie "/ignore:4099", die ja soweit ich weiß abgeschafft wurden. Im Normalfall würd ich Warnungen ja nicht ignorieren, aber in diesem speziellen Fall würde ich schon gern die Warnungen wegbekommen, weil ich mir halt sicher bin, dass es ok ist keine PDBs für SFML zu haben. Hat da jemand eine Idee? Ich würde es natürlich gern vermeiden Warnungen generell auszustellen oder gänzlich auf Debug-Information zu verzichten (für mein Programm selbst). Beides würde natürlich die Warnungen beseitigen, aber das ist ja logischerweise keine Alternative. ;)

Laut Internetrecherche gibt es wohl nicht viel Hoffnung. Alles was ich gefunden habe ist das "Patchen" der link.exe mit einem Hex-Editor. Aber auch das kann ja nicht wirklich eine gute Lösung sein. Das Problem besteht ja generell beim statischen Linken im Debug-Build. Vorallem wenn man weder Sourcen noch PDBs hat (ist hier natürlich nicht so).

Ich warte mal ab, vielleicht hat ja noch jemand einen Trick parat. Zur Not muss ich halt doch die PDBs bauen.

Re: [SFML] Linker-Warnungen mit statischem Linken

Verfasst: 14.11.2012, 08:16
von dot
Ganz ehrlich? Ich würd einfach SFML selber builden, was vermutlich sowieso eine gute Idee wäre und dein Problem würde sich so nebenher erübrigen... ;)

Re: [SFML] Linker-Warnungen mit statischem Linken

Verfasst: 14.11.2012, 10:20
von BeRsErKeR
Ja das hab ich auch vor, wenns nicht anders geht. Ich frage mich nur wie die armen Leute das machen, wenn sie weder Sourcen noch PDBs haben (z.B. bei einer 3rd-Party-Lib).

Re: [SFML] Linker-Warnungen mit statischem Linken

Verfasst: 14.11.2012, 10:46
von Schrompf
Die armen Leute ignorieren die Warnung, glaube ich. Das Selberbauen ist schon die beste Lösung, solange die jeweilige Lib nicht so eine CMake - configure - irgendwas - Katastrophe ist. Und das Ganze ist natürlich ein weiteres schönes Argument, warum man sich von GPL / LGPL fernhalten sollte.

Re: [SFML] Linker-Warnungen mit statischem Linken

Verfasst: 14.11.2012, 10:52
von joggel
Hab gegen SFML nur dynamisch gelinkt. Und da lief alles Reibungslos...
Und SFML steht unter der zlib-Lizenz.
Und wieso soll man sich von LGPL vernhalten?

Re: [SFML] Linker-Warnungen mit statischem Linken

Verfasst: 14.11.2012, 10:56
von Schrompf
Weil Du mit der LGPL zum dynamischen Linken gezwungen wirst. Und warum dynamisches Linken in den meisten Fällen die schlechtere Wahl ist, hatten wir ja schon diskutiert. In Kurzform:

- unnötige zusätzliche Datei neben der Exe
- jeder Funktionsaufruf in die DLL kostet Performance im Bereich einer virtuellen Methode
- Compiler kann nicht global optimieren
- Compiler kann unbenutzte Funktionen der Lib nicht entfernen

Re: [SFML] Linker-Warnungen mit statischem Linken

Verfasst: 14.11.2012, 11:05
von BeRsErKeR
Schrompf hat geschrieben:Die armen Leute ignorieren die Warnung, glaube ich. Das Selberbauen ist schon die beste Lösung, solange die jeweilige Lib nicht so eine CMake - configure - irgendwas - Katastrophe ist. Und das Ganze ist natürlich ein weiteres schönes Argument, warum man sich von GPL / LGPL fernhalten sollte.
Naja Ignorieren ist leicht gesagt. Das sind ja nicht nur 1-2 Warnungen pro Lib, sondern mitunter hunderte. Das ist schon nervig und wichtige Warnungen gehen dabei unter.
Schrompf hat geschrieben:Die armen Leute ignorieren die Warnung, glaube ich. Das Selberbauen ist schon die beste Lösung, solange die jeweilige Lib nicht so eine CMake - configure - irgendwas - Katastrophe ist. Und das Ganze ist natürlich ein weiteres schönes Argument, warum man sich von GPL / LGPL fernhalten sollte.
Ich hab SFML noch nicht selbst gebaut aber es scheint schon CMake-Gefummel zu sein. Scheinbar unter Windows aber schon recht trivial und mit verständlicher Anleitung. Ich werds dann bei Zeiten mal ausprobieren.