Pregunta

Estoy trabajando en un proyecto en QT con el compilador MSVC2008, como dice el título.

El código de muestra, del que estoy tratando de trabajar, utiliza AFX_MAPS, y por lo que puedo decir (realmente no tengo idea de cómo funciona AFX), el siguiente código significa que cuando se recibe el mensaje WM_PI_RAWDATA_REEADI (( No tengo idea de dónde o cómo se recibe), se activa la función onRawdataready.

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

Intenté copiar el código en mi proyecto y luego agregar #include en el encabezado, pero me da el siguiente error:

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]

Las soluciones que he encontrado en otro lugar para esto parecen ser la configuración del proyecto en Visual Studio, por lo que no estoy seguro de cómo evitarlo.

¿Alguna idea sobre cómo solucionar esto o cómo trabajar alrededor de las cosas AFX_MSG?

Muchas gracias

¿Fue útil?

Solución

¿Qué hay de hacer lo que decía el mensaje de error y #defineing el _AFXDLL símbolo del preprocesador. Dependiendo de su entorno de compilación, solo necesita agregarlo a la línea de comandos de cumplimiento como argumento (/D_AFXDLL, si recuerdo correctamente). Pero cuando trabaja con QT, probablemente obtenga un archivo *.pro de todos modos y puede agregarlo allí (usando el DEFINES variable). Así que solo agregue esta línea *.pro archivo

DEFINES += _AFXDLL

Pero solo la integración del código MFC en una aplicación QT (que son dos bibliotecas de abstracción GUI y OS completamente diferentes) no será de mucha ayuda, ya que ambos no funcionarán tan bien, no hablar del problema de diseño. Quizás pueda portar la aplicación de MFC a Qt.

Otros consejos

Básicamente dice que debe usar bibliotecas estáticas o DLL. No puedes mezclar.

Como usted dice, esto es parte de la configuración del proyecto.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top