Frage

Ich arbeite an einem Projekt in QT mit dem MSVC2008 -Compiler, wie der Titel sagt.

Der Beispielcode, aus dem ich arbeiten möchte, nutzt AFX_MAPS. Ich habe keine Ahnung, wo oder wie es empfangen wird), die Funktion onrawdataready wird ausgelöst.

//{{AFX_MSG_MAP(CPDImfcDlg)
ON_MESSAGE(WM_PI_RAWDATA_READY, OnRawDataReady )
//}}AFX_MSG_MAP

Ich habe versucht, den Code in mein Projekt zu kopieren und dann #include in den Header hinzugefügt, aber er gibt mir den folgenden Fehler:

D:\Program Files\Microsoft Visual Studio 9.0\VC\ATLMFC\INCLUDE\afx.h:24: error: C1189: #error :  Building MFC application with /MD[d] (CRT dll version) requires MFC shared dll version. Please #define _AFXDLL or do not use /MD[d]

Die Korrekturen, die ich an anderer Stelle für diese Projekteinstellungen in Visual Studio zu sein scheinen, bin ich mir nicht sicher, wie ich es umgehen soll.

Irgendwelche Ideen, wie man dies behebt oder wie man das AFX_MSG -Zeug herumarbeitet?

Danke vielmals

War es hilfreich?

Lösung

Was ist mit dem, was die Fehlermeldung gesagt hat und #definedas _AFXDLL Präprozessorsymbol. Abhängig von Ihrer Build -Umgebung müssen Sie sie nur zur komplizierenden Befehlszeile als Argument hinzufügen (Argument (/D_AFXDLL, wenn ich mich richtig erinnere). Aber wenn Sie mit QT arbeiten DEFINES Variable). Fügen Sie also diese Zeile Ihnen *.Pro -Datei hinzu

DEFINES += _AFXDLL

Aber nur die Integration von MFC -Code in eine QT -Anwendung (die zwei völlig unterschiedliche GUI- und OS -Abstraktionsbibliotheken sind) wird jedoch nicht zu viel helfen, da beide nicht so gut zusammenarbeiten, um nicht über das Designproblem zu sprechen. Vielleicht können Sie die Anwendung von MFC nach QT portieren.

Andere Tipps

Es heißt im Grunde, dass Sie entweder statische Bibliotheken oder DLLs verwenden müssen. Sie können sich nicht mischen.

Wie Sie sagen, ist dies Teil der Projekteinstellungen.

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