Utilizzando AFX_MSG in QT con compilatore MSVC2008
-
28-10-2019 - |
Domanda
Sto lavorando a un progetto in QT con il compilatore MSVC2008, come dice il titolo.
Il codice di esempio, da cui sto cercando di lavorare utilizza AFX_MAPS e per quanto posso dire (non ho davvero idea di come funziona AFX), il codice seguente significa che quando viene ricevuto il messaggio wm_pi_rawdata_ready ( Non ho idea di dove o come viene ricevuto), viene attivata la funzione OnrawDataReady.
//{{AFX_MSG_MAP(CPDImfcDlg)
ON_MESSAGE(WM_PI_RAWDATA_READY, OnRawDataReady )
//}}AFX_MSG_MAP
Ho provato a copiare il codice nel mio progetto e quindi aggiungere #include nell'intestazione, ma mi dà il seguente errore:
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]
Le correzioni che ho trovato altrove per questo sembrano essere le impostazioni del progetto in Visual Studio, quindi non sono sicuro di come aggirarlo.
Qualche idea su come risolvere questo problema o come aggirare le cose AFX_MSG?
Grazie molto
Soluzione
Che ne dici di fare ciò che diceva il messaggio di errore e #define
ing the _AFXDLL
simbolo preprocessore. A seconda del tuo ambienti di costruzione, devi solo aggiungerlo alla riga di comando complier come argomento (/D_AFXDLL
, se ricordo bene). Ma quando lavori con Qt probabilmente hai comunque un file *.pro e puoi semplicemente aggiungerlo lì (usando il DEFINES
variabile). Quindi aggiungi questa riga a te *.pro file
DEFINES += _AFXDLL
Ma solo integrare il codice MFC in un'applicazione QT (che sono due librerie di astrazione GUI e OS completamente diverse) non sarà di grande aiuto, poiché entrambi non lavoreranno così bene insieme, per non parlare del problema del design. Forse puoi portare l'applicazione da MFC a Qt.
Altri suggerimenti
Fondamentalmente dice che devi utilizzare librerie statiche o DLL. Non puoi mescolare.
Come dici tu, questo fa parte delle impostazioni del progetto.