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

24.11.2010, 18:40

Probleme beim statischen Linken von libgcc und libstdc++

Guten Abend.
Ich möchte für das Programm an dem ich gerade schreibe die Abhängigkeit von libgcc_s_dw2-1.dll und libstdc++-6.dll entfernen. Im Internet hab ich gefunden, das man einfach -static-libgcc und -static-libstdc++ zu den Linkeroptionen hinzufügen muss. Bei einfachen Programmen, die einem "Hello World!" funktioniert das einwandfrei, aber sobald ich irgendeine Form von externer Bibliothek einbinde meckert er trotz Linkeroptionen, dass ihm die dlls fehlen. (Das Problem tritt sowohl bei OGRE als auch bei SFML auf)
Es wäre nett wenn mir jemand helfen könnte, weil ich im Moment überhaupt nicht weiterkomme... Komischerweise lassen sich die Programme aus Code::Blocks heraus starten, aber sobald ich in meinen bin Ordner gehe meckert er wegen der fehlender dlls. Ach ja falls es hilft: ich verwende MinGW in der Version 4.4.1, aber ich habs auch schon mit der Version 4.5.0 probiert. Ich bin mir aber nicht sicher, ob es etwas damit zutun hat. Bevor ich meinen PC neu aufgesetzt hab (und ne alte Version hatte) hat noch alles funktioniert.
Danke schonmal,
Foaly

n0_0ne

1x Contest-Sieger

  • Private Nachricht senden

2

24.11.2010, 20:46

hhmmm, also ich hab vor 1-2 wochen auch mal testweise mein OGRE programm an jemanden weitergegeben um zu testen, welche dlls ich alle mitliefern muss. Ich habe auch rausgefunden, dass ich die beiden linkeroptionen brauche, da er sonst meckert. Bei mir hat das allerdings dann ausgereicht und er hat sich nicht weiter beschwert.

Beschwert er sich denn wegen genau den beiden geschriebenen dlls, oder wegen anderen? (ist meiner meinung nach nicht ganz klar in deinem post)

Wenn du aus der IDE heraus das ganze normal starten kannst, ist das ganz normal, wenn du allerdings im bin ordner die datei startest und er sich über fehlende dlls beschwert, wurden die standardsachen anscheinend nicht statisch gelinkt. Überprüf nochmal ganz genau deine projekteinstellungen, d.h. wird sowohl im debug, als auch im release modus statisch gelinkt? führst du die richtige/aktuelle .exe aus? Überprüf auch mal anhand der Dateigrößen, ob er wirklich statisch linkt. Hat bei mir etwa einen Unterschied von 1,5MB gemacht.

3

24.11.2010, 21:02

Hi.
Also wenn ich die aktuelle .exe ausführe, beschwert er sich darüber, dass die dlls libgcc_s_dw2-1.dll und libstdc++-6.dll fehlen. Der Fehler tritt wie gesagt nur auf, wenn ich eine Bibliothek linke.
Ich hab die Linkeroptionen -static-libgcc und -static-libstdc++ "global", also sowohl für debug als auch für release. Ich führe auch die aktuelle .exe aus. So weit ich das sehen kann wird tatsächlich statisch gelinkt. Die Dateigröße wächst von 52,7 KB auf 1,00MB.
Ich hoffe das hilft.
Foaly

n0_0ne

1x Contest-Sieger

  • Private Nachricht senden

4

24.11.2010, 21:22

Möglicherweise wurden die externen bibliotheken gegen andere versionen der dlls gelinkt. Hast du dir da vorkompilierte dlls runtergeladen, oder hast du die selbst compiled? entweder würde ich dann vielleicht eine neuere vorkompilierte version runterladen, falls vorhanden, oder selbst compilen?

5

24.11.2010, 21:35

hmm also ich benutze die vorkompilierten Versionen der dlls. Aber es sind jeweils die neusten Versionen (SFML 1.6 und OGRE 1.7.2). Die dlls neu zu kompilieren ist gar keine schlechte Idee, ich werde es mal versuchen. Aber gibt es noch irgendeine andere Möglichkeit?
Trotzdem schonmal vielen dank.
Foaly

Werbeanzeige