Frage

Ich habe ein QT-Projekt und möchte eine externe Bibliothek verwenden, die "afxstr.h" enthält. Problem ist, dass, wenn ich, wenn ich nach der Verknüpfung mit dem Lib kompiliert und in einschließlich ihres Headers verbunden bin, einen Fehler:

generasacodicetagpre.

Natürlich ist mein Projekt kein MFC-Projekt und ich kann atlstr.h stattdessen nicht verwenden, da es nicht meine Bibliothek ist.

Ich suche eine schnelle Lösung!

Ich verwende VS2010.

Die fragliche LIB ist der interaktive Brokers API .

War es hilfreich?

Lösung

Die jeweilige Einstellung ist Konfigurationseigenschaften / Allgemein, Verwendung von MFC.

Die von diesem implizierte Compiler-Option ist / d "_afxdll", wenn Sie MFC in einer DLL verwenden. Wie für Linkeroptionen wird die explizite Verknüpfung von Windows-Importbibliotheken (z. B. Kernel32.lib) ausdrücklich entfernt.

Visual Studio scheint die jeweiligen Bibliotheken automatisch zu finden.Die Option "Verwendung von MFC" wird jedoch mit der Projektdatei gespeichert, sodass ich nicht sagen kann, wie er in ein benutzerdefiniertes Build-Skript übersetzt wird.

das erste include muss

sein generasacodicetagpre.

und Sie können Windows.h vorher nicht einschließen.Normalerweise ist das der erste in stdafx.h, wenn Sie vorkompilierte Header verwenden.Abgesehen davon können andere MFC-Header nach Bedarf frei aufgenommen werden.

Ich bezweifle, dass dies das Ende der Geschichte ist, um MFC zu spielen, um mit etwas zu spielen, ist schmerzhaft, und manchmal ist es einfacher, aufzugeben :) Ein schneller Google zeigt, dass es Lösungen gibt, aber sie beinhalten zusätzlichen Code und sind eher alt.

Andere Tipps

Nun, Sie haben das schon wissen, machen Sie es einfach klarer:

.pro Datei hinzufügen: Definiert += ib_use_std_string

Vermeiden Sie MFC CString

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top