Jump to content

wxWidgets-Bibliotheken in Konflikt mit Standardbibliotheken

Empfohlene Beiträge

Hallo,

um wxWidgets verwenden zu können, muss man ja einige zusätzliche Abhängigkeiten beim Linker einstellen. Laut dieser (wxWidgets für Visual C++ CwCity.de - Tutorial -) Anleitung genau diese:

wxmsw28_core.lib

wxbase28.lib

wxtiff.lib

wxjpeg.lib

wxpng.lib

wxzlib.lib

wxregex.lib

wxexpat.lib

winmm.lib

comctl32.lib

rpcrt4.lib

wsock32.lib

odbc32.lib

Erstes Problem: Einige davon finde ich nicht in den Bibliotheksverzeichnissen, nämlich:

winmm.lib

comctl32.lib

rpcrt4.lib

wsock32.lib

odbc32.lib

Angegeben habe ich für mein Projekt jetzt (an die aktuelle wxWidgets-Version angepasst) diese:

wxmsw30u_core.lib

wxbase30u.lib

wxtiff.lib

wxjpeg.lib

wxpng.lib

wxzlib.lib

wxregexu.lib

wxexpat.lib

Zweites Problem: Ich bekomme eine Fehlermeldung vom Linker, nämlich: Linkertoolwarnung LNK4098

Ich soll also außer LIBC.lib alle mit /NODEFAULTLIB versehen. Ich habe das bei der Option Linker > Eingabe > Bestimmte Standardbibliotheken ignorieren mit dieser Zeile zu bewirken versucht:

/NODEFAULTLIB:[LIBCMT.lib, MSVCRT.lib, LIBCD.lib, LIBCMTD.lib, MSVCRTD.lib]

Funktioniert leider nicht - gleiche Fehlermeldung ... ich habe noch mehr Fehlermeldungen, aber hängen sicher mit letzterer zusammen.

Ich verzweifle langsam mit den Widgets ... :confused:

Gruß

PL1994

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen
um wxWidgets verwenden zu können, muss man ja einige zusätzliche Abhängigkeiten beim Linker einstellen. Laut dieser (wxWidgets für Visual C++ CwCity.de - Tutorial -) Anleitung genau diese:
Das ist das Problem mit Tutorials: Sie stellen immer eine Vereinfachung dar, die zwar den Einstieg erleichtert, aber auch wichtige Zusammenhänge vor dir versteckt.

Du solltest genau die Libs dazu linken, die du brauchst. Nicht blind einer Liste folgen.

Erstes Problem: Einige davon finde ich nicht in den Bibliotheksverzeichnissen, nämlich:

winmm.lib

comctl32.lib

rpcrt4.lib

wsock32.lib

odbc32.lib

Das sind Windows-Libs, die nichts mit wxWidgets zu tun haben. Visual C++ sollte von ganz allein in der Lage sein, diese zu finden.

Zweites Problem: Ich bekomme eine Fehlermeldung vom Linker, nämlich: Linkertoolwarnung LNK4098

Ich soll also außer LIBC.lib alle mit /NODEFAULTLIB versehen.

Nein. Ganz falsche Schlussfolgerung.

Du sollst darauf achten, dass dein Programm und deine Libs nicht mit unterschiedliche Versionen der Standard-Libs verlinkt sind. Das konkrete Problem hier dürfte sein, dass du dein Programm in der Debug-Konfiguration baust, aber die wx-Release-Libs dazu linkst. Das funktioniert nicht.

Schau dir mal die Projekteigenschaften des webview-Samples an. Beachte, wie sich bei Linker->General die Lib-Verzeichnisse ändern, wenn du zwischen einer DLL-Konfiguration und einer Nicht-DLL-Konfiguration wechselst. Beachte, die sich bei Linker->Input die Namen der Libs ändern, wenn du zwischen Debug und Release wechselst.

Es ist leider nicht immer alles so einfach, wie es in Tutorials dargestellt wird.

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Ja, das war es :) Jetzt habe ich das Problem eines nicht aufgelösten externen Symbols. Hängt wahrscheinlich damit zusammen, dass ich eben nicht die richtigen Bibliotheken angegeben habe. Wo kann ich nachsehen, welche Bibliotheken ich zum Beispiel für wxApp brauche?

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

So, nachdem ich jetzt endlich mal dazu gekommen bin, das auszuprobieren:

Danke schon einmal für deine Ratschlage und den Link zur Doku :)

Nachdem ich noch einmal die Anleitung in meinem Buch durchgegangen bin, habe ich auch dort eine Liste mit den benötigten Bibliotheken gefunden - und endlich funktioniert es.

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Erstelle ein Benutzerkonto oder melde dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde dich hier an.

Jetzt anmelden


×