Ich habe schon seit ein paar Tagen versucht, eine statische Version von Qt mit Visual Studio 2013 zu erstellen. Ich kann einfach nicht herausfinden, was ich falsch gemacht habe.
System:
Was ich mehrere Male gemacht habe:
Für jeden Ordner habe ich eine Visual Studio x86-Befehlszeile gestartet und ausgeführt:
Dies war immer erfolgreich für jede Variante von -static vs -shared oder Qt 5.2.1 vs. Qt 5.3.0 alpha, die ich ausprobiert habe.
In Qt Creator
Ich kann die verschiedenen Kits registrieren, ein beliebiges Beispiel mit der gemeinsamen Qt-Bibliothek kompilieren und starten. Die Beispiele, die die statische Qt-Bibliothek verwenden, wurden dagegen nie kompiliert. Der Fehler sieht immer so aus: LNK1104: Datei kann nicht geöffnet werden 'C: /Qt/5.3.0/msvc2013-static/lib/translator_common.lib' . Das Problem ist, dass die Datei fehlt (entweder translator_commond.lib im Debug-Modus oder translator_common.lib im Freigabemodus)
In Visual Studio 2013 (mit Visual Studio Addin 1.2.3 alpha)
Ich kann die Qt-Version hinzufügen und die Qt-Version meiner Lösung ändern. Wenn Sie ein sehr einfaches Programm wie dieses kompilieren und ausführen können, verwenden Sie die freigegebene Version von Qt:
%Vor%Ich bekomme ungelöste externe Linker-Fehler, wenn ich die statische Version von Qt verwende:
%Vor%Trotz all meiner Bemühungen war ich nicht in der Lage, zu finden, welche lib enthalten sein soll, um die fehlenden Symbole aufzulösen.
Haben Sie eine Ahnung, was ich falsch gemacht habe?
Ich traf zufällig auf dasselbe Problem. Ich denke, die Lib-Datei, die Sie verknüpfen möchten, ist translator_commond.lib. Es enthält die ANGEL-Symbole.
Hier ist, wie ich den Namen der Bibliothek herausgefunden habe, falls es hilfreich sein könnte, wenn Sie andere ungelöste externe Symbole mit Qt getroffen haben.
Das Tool dumpbin.exe
ist hier sehr hilfreich. Sie könnten dumpbin.exe /symbols some_lib.lib | findstr /c:"SOME_SYMBOL"
ausführen, um zu ermitteln, ob eine Bibliothek ein Symbol enthält oder verwendet.
Da es in Qt so viele Bibliotheken gibt, suche ich einfach nach allen * .lib-Dateien im Qt-Verzeichnis und kopiere sie in ein einzelnes Verzeichnis. Dann mache ich eine Stapel-Suche mit dem folgenden Befehl.
%Vor% Sobald Sie fertig sind, können Sie das generierte symbols.txt
überprüfen und den Namen der Bibliothek herausfinden, die das gesuchte Symbol enthält.
Übrigens, da es mehrere große Bibliotheken gibt, z.B. Qt5Core, Qt5Quick usw. möchten Sie wahrscheinlich von der Suche ausschließen.
Tags und Links c++ qt visual-studio qt5 static-libraries