2012-05-22 15 views
11

Ich habe ein Qt-Projekt und möchte eine externe Bibliothek verwenden, die "afxstr.h" enthält. Problem ist, dass, wenn ich nach der Verknüpfung mit dem lib kompilieren und einschließlich ihren Header, ich einen Fehler:Hinzufügen von MFC-Unterstützung zu einem Qt-Projekt

#error afxstr.h can only be used in MFC projects. Use atlstr.h 

Natürlich, mein Projekt ist kein MFC-Projekt und ich kann nicht verwenden atlstr.h statt, weil Es ist nicht meine Bibliothek.

Ich bin auf der Suche nach einer schnellen Lösung!

Ich benutze VS2010.

Die betreffende Lib ist die Interactive Brokers API.

+0

Ist das eine Open Source und frei verfügbare Bibliothek? Wenn ja, einen Link bekommen? – HostileFork

+0

Interaktive Broker API. Es ist kostenlos, aber nicht Open Source –

+0

Haben Sie versucht, die Header-Dateien der Bibliothek so zu ändern, dass sie 'atlstr.h' anstelle von' afxstr.h' enthalten? Diese beiden Header-Dateien können auf dieselbe Implementierung von 'CString' zielen. –

Antwort

4

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

Die von ihm implizierte Compileroption ist/D "_AFXDLL" bei Verwendung von MFC in einer DLL. Wie bei Linker-Optionen, seltsamerweise die explizite Verknüpfung von Windows-Import-Bibliotheken (wie kernel32.lib) entfernt werden.

Visual Studio scheint die entsprechenden Bibliotheken automatisch zu finden. Die Option "Use of MFC" wird jedoch mit der Projektdatei gespeichert, daher kann ich nicht sagen, wie dies in ein benutzerdefiniertes Buildskript umgesetzt werden würde.

Das sind erste

#include <afx.h> 

sein muss, und man kann nicht windows.h davor sind. In der Regel ist dies das erste Include in stdafx.h, wenn Sie vorkompilierte Header verwenden. Darüber hinaus können andere MFC-Header nach Bedarf frei hinzugefügt werden.

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

1

na ja, Sie haben dies bereits wissen, nur machen es deutlich:

.proDatei add: DEFINES + = IB_USE_STD_STRING

vermeiden Verwendung MFC CString