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

È stato utile?

Soluzione

Che ne dici di fare ciò che diceva il messaggio di errore e #defineing 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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top