2011-01-10 7 views
1

Es gibt ein Problem, App noch MSVCR100.dll und MSVCR100.dll.Visual Studio 2010 und QT 4.7.1 statische Verknüpfung

Bauen QT Quelle:

  • Satz QMAKESPEC = win32-msvc2010
  • configure -Plattform win32-msvc2010 -static
  • Nmake

Nach der Installation ich mein Projekt bin setuping ans setzen Optionen auf/MT/ZI. Still - mein Projekt will MSVCR100.dll und MSVCR100.dll.

+0

Beim Erstellen einer statischen Bibliothek sollte es nicht einmal einen Verknüpfungsschritt geben. Stattdessen sammelt das Bibliotheksverwaltungsprogramm 'lib.exe' alle' .obj' Dateien in eine '.lib'. Was genau erwarten Sie? –

Antwort

0

Sie sollen die DLL-Versionen dieser Bibliotheken verwenden, und umfassen die verteilbare Unterstützung installieren - es ist die Microsoft bevorzugte Art und Weise aus mehreren Gründen ist

Meine Vermutung ist mit -static, dass auch (meist mit Sicherheits-Updates zu tun) Qt verwendet eine Laufzeitkomponente, die die DLL verwendet (möglicherweise Webkit oder die Multimedia-Klassen, die MS-Funktionen verwenden)

+0

Dependency Walker wird Ihnen sagen, warum. – MSalters

2

Es soll so sein.

Aus der Dokumentation QT:

"Qt gebaut wird, um den -MD (d) Schalter, der die dynamischen C/C++ Laufzeitbibliotheken verknüpft gegen Diese ist notwendig, da wir Probleme mit dem Speicher erlebt haben, wenn etwas mit. Es wird jedoch empfohlen, das Flag -MD (d) zu verwenden, und Sie sollten dieses Flag nicht selbst für Ihre Anwendung ändern, da es mit der Erstellung der Qt-Bibliothek im Konflikt steht, wenn Sie die Markierung in -MT ändern sollte es auch nicht für Qt ändern, da es wahrscheinlich Probleme verursacht "

Weitere Informationen finden Sie hier:

http://qt-project.org/faq/answer/why_does_a_statically_built_qt_use_the_dynamic_visual_studio_runtime_librar