Generar y depurar proyectos de dispositivos de Visual C++
Actualización: noviembre 2007
Generar y depurar los proyectos de dispositivos son procesos algo distintos a los de generación y depuración de proyectos de escritorio.
A continuación se muestra una lista de técnicas de compilación y depuración:
El modelo de subprocesos para los proyectos de dispositivos es libre de forma predeterminada. No obstante, Windows CE no es totalmente compatible con el cálculo de referencias COM y las definiciones asociadas si no se elige la opción DCOM al generar la imagen del SO CE. Por consiguiente, en algunas plataformas CE, el compilador puede generar advertencias sobre la compatibilidad con DCOM y la definición de subprocesamiento múltiple y simple. El objeto de esta advertencia es aconsejarle sobre cómo controlar el subprocesamiento y la sincronización en su propio código. Por ejemplo, al compilar un proyecto de dispositivo de ATL, el compilador puede emitir una advertencia sobre la definición de _CE_ALLOW_SINGLE_THREADED_OBJECTS_IN_MTA. Es el mismo caso que el de la creación de objetos COM consumiendo servicios web, además de objetos ATL COM en la plataforma de Windows Mobile. Puede definir este indicador en el archivo de encabezado para objetos de un único subproceso del siguiente modo: #define _CE_ALLOW_SINGLE_THREADED_OBJECTS_IN_MTA. Si su código está controlando el subprocesamiento múltiple, puede omitir esta advertencia sin ningún riesgo. Para obtener más información sobre COM, DCOM y modelos de subprocesos para Windows CE, vea Subprocesos y procesos COM y Servicios de componentes (COM y DCOM), en la documentación de Windows CE 5.0.
Las aplicaciones de dispositivos nativas se crean con vínculos estáticos de forma predeterminada. Puede agregar los siguientes archivos DLL en tiempo de ejecución a la propiedad de proyecto Archivos adicionales si elige cambiar a los vínculos dinámicos:
Configuraciones de versión de lanzamiento de aplicaciones MFC
Agregue los siguientes archivos DLL en tiempo de ejecución a la propiedad de proyecto Archivos adicionales: msvcr80.dll|$(BINDIR)\$(INSTRUCTIONSET)\|%CSIDL_PROGRAM_FILES%\<nombreDeProyecto>|0;atl80.dll|$(BINDIR)\$(INSTRUCTIONSET)\|%CSIDL_PROGRAM_FILES%\<nombreDeProyecto>|0;MFC80U.dll|$(BINDIR)\$(INSTRUCTIONSET)\|%CSIDL_PROGRAM_FILES%\<nombreDeProyecto>|0;
Configuraciones de versión de depuración de aplicaciones MFC
Agregue los siguientes archivos DLL en tiempo de ejecución a la propiedad de proyecto Archivos adicionales: msvcr80d.dll|$(BINDIR)\$(INSTRUCTIONSET)\|%CSIDL_PROGRAM_FILES%\<nombreProyecto>|0;msvcr80.dll|$(BINDIR)\$(INSTRUCTIONSET)\|%CSIDL_PROGRAM_FILES%\<nombreProyecto>|0;atl80.dll|$(BINDIR)\$(INSTRUCTIONSET)\|%CSIDL_PROGRAM_FILES%\<nombreProyecto>|0;MFC80Ud.dll|$(BINDIR)\$(INSTRUCTIONSET)\|%CSIDL_PROGRAM_FILES%\<nombreProyecto>|0;
Configuraciones de versión de lanzamiento de aplicaciones ATL
Agregue los siguientes archivos DLL en tiempo de ejecución a la propiedad de proyecto Archivos adicionales: msvcr80.dll|$(BINDIR)\$(INSTRUCTIONSET)\|%CSIDL_PROGRAM_FILES%\<nombreDeProyecto>|0;atl80.dll|$(BINDIR)\$(INSTRUCTIONSET)\|%CSIDL_PROGRAM_FILES%\<nombreDeProyecto>|0;
Configuraciones de versión de depuración de aplicaciones ATL
Agregue los siguientes archivos DLL en tiempo de ejecución a la propiedad de proyecto Archivos adicionales: msvcr80d.dll|$(BINDIR)\$(INSTRUCTIONSET)\%CSIDL_PROGRAM_FILES%\<nombreDeProyecto>|0;msvcr80.dll|$(BINDIR)\$(INSTRUCTIONSET)\%CSIDL_PROGRAM_FILES%\<nombreDeProyecto>|0;atl80.dll|$(BINDIR)\$(INSTRUCTIONSET)\%CSIDL_PROGRAM_FILES%\<nombreDeProyecto>|0;
Para obtener más información sobre la carga de Windows CE DLL, vea Cargar DLL de Windows CE LoadLibrary.
Nota: Si se cargan varios archivos DLL de distintos directorios con el mismo nombre y al mismo tiempo, por ejemplo, \Windows\aDLL.dll y \Archivos de programa\aDLL.dll, pueden producirse resultados imprevisibles. Se recomienda cargar una copia de un archivo DLL cada vez o esperar a llamar al primer archivo DLL cargado.
Algunas consideraciones adicionales:
Al trasladar a MFC 8.0 #, defina _WIN32_WCE_PSPC. Este marcador no está definido en MFC8.0 de forma predeterminada.
La opción ARM4T no se admite si el destino es Pocket PC 2003 o Smartphone 2003 en la lista desplegable Compilar para arquitectura. Para buscar esta lista en el cuadro de diálogo <nombre del proyecto> Propiedad Páginas, haga clic en Propiedades de configuración, en C/C++, en Avanzada y, a continuación, seleccione Compilar para arquitectura.
Las funciones GAPI se pueden utilizar en C++ pero no en C. La inclusión de gx.h en el código sólo funciona desde C++. Si está utilizando GAPI en el código, no utilice la opción /TC del compilador.
En MFC 8.0 para dispositivos, puede controlar la creación e inserción de CommandBar. El miembro CDialog::m_pWndEmptyCB ya no se admite. Este miembro se utilizaba para señalar al CCommandBar (Clase) vacío, también denominado MenuBar en Pocket PC, que se creaba para el cuadro de diálogo y al que se podía hacer referencia para insertar su propia MenuBar.
Checked::_strlwr_s, _strlwr_s_l, _mbslwr_s, _mbslwr_s_l, _wcslwr_s, _wcslwr_s_l, Checked::tcslwr_sy Checked::gcvt_s se proporcionan para las plataformas que utilizan Windows CE.
El indicador _WIN32_WCE_PSPC aún no está definido; puede utilizar el indicador _WIN32_WCE_PSPC WIN32_PLATFORM_PSPC como solución.
Para el traslado de la aplicación STL, incluya <deque> en lugar de #include <deque.h>.
El IDE es compatible con varias plataformas. Si hospeda objetos de MFC u ATL ActiveX en un proyecto de dispositivos en un recurso de cuadro de diálogo, debe crear y registrar un control equivalente en un proyecto equivalente de ActiveX para escritorio. El control se puede agregar a la plantilla del cuadro de diálogo de dispositivo en el editor de recursos y se ejecutará correctamente. El escritorio y las versiones de dispositivo del control ActiveX debería tener el mismo GUID y las mismas propiedades en tiempo de diseño, como el color de fondo.
Vea también
Tareas
Cómo: Poner en servicio un dispositivo en un proyecto de Visual C++
Conceptos
Configuración de depuración e implementación de los proyectos de dispositivos de Visual C++
Configuración de depuración e implementación de los proyectos de dispositivos de Visual C++
Referencia
Otros recursos
Depurar proyectos de dispositivos