Forum: PC-Programmierung gcc stdlib qsort() ist unter Windows in welcher DLL?


von Lothar (Gast)


Lesenswert?

Habe versucht libstdc++-6.dll und libgcc_s_seh-1.dll zu linken:

ERROR: could not load symbol "qsort"

Entweder ich mache was falsch oder qsort() ist dort nicht drin.

Wie kann man denn sehen was in einer DLL drin ist?

von Oliver S. (oliverso)


Lesenswert?

> Entweder ich mache was falsch oder qsort() ist dort nicht drin.

Es ist drin. Im namespace std.

Oliver

von Klaus W. (mfgkw)


Lesenswert?

Wie hast du die denn aufgerufen? Mit std:: oder ohne (falls du C++) 
nimmst)?
Wie die Deklaration (stdlib.h oder cstdlib)?
qsort ist auch nicht in der C++-lib, sondern in der C-lib.

Ein du die gcc-toolchain hast, sollte das auch ein nm dabei sein.
Danke kann man den Inhalt von elf-Dateien anschauen. Könnte auch mit 
einer DLL gehen.

von Rolf M. (rmagnus)


Lesenswert?

Lothar schrieb:
> Habe versucht libstdc++-6.dll und libgcc_s_seh-1.dll zu linken:

Wozu? Die sollten eigentlich automatisch gelinkt werden.
Deshalb vermute ich, dass entweder deine Toolchain kaputt ist oder du 
sie falsch nutzt. Leider hast du über beides nichts weiter geschrieben.

von Lothar (Gast)


Lesenswert?

Problem gelöst. Hier steht bei gcc unter Windows ist msvcrt.dll die C 
Standard Library. Damit wird qsort() jetzt gefunden:

https://stackoverflow.com/questions/6394512/standard-c-library-in-mingw

Was ich nicht verstehe, wenn qsort() auch in libstdc++-6.dll drin ist, 
warum geht das dann nicht? Oder geht das nur mit Namespace? Wie wird 
dann das Symbol geschrieben, __std_qsort ist es schon mal nicht.

Das hätte mich aber auch noch interessiert:

> Wie kann man denn sehen was in einer DLL drin ist?

Also wenn man eine DLL von jemand anderem bekommt. Oder ist man dann 
ohne Doku verloren?

von Oliver S. (oliverso)


Lesenswert?

Lothar schrieb:
> Also wenn man eine DLL von jemand anderem bekommt. Oder ist man dann
> ohne Doku verloren?

Ohne Doku nicht, ohne Google aber schon.

Dependency Walker ist so alt wie Windows, etwas neueres gibts dann hier:
https://github.com/lucasg/Dependencies

Oliver

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.