Generazione e debug dei progetti per dispositivi di Visual C++

Aggiornamento: novembre 2007

La compilazione e il debug dei progetti per dispositivi sono leggermente differenti rispetto alla compilazione e al debug dei progetti per desktop.

Di seguito è riportato un elenco di tecniche di compilazione e debug:

  • Per impostazione predefinita, il modello di threading utilizzato per i progetti per dispositivi è libero. In Windows CE non viene tuttavia fornito supporto completo per il marshalling COM e per le definizioni associate, se non si seleziona l'opzione DCOM durante la compilazione dell'immagine del sistema operativo CE. Pertanto, in alcune piattaforme CE, il compilatore potrebbe generare avvisi relativi al supporto DCOM e alla definizione singola e multithreading. Gli avvisi segnalano di gestire threading e sincronizzazione nel codice personalizzato. Quando, ad esempio, si compila un progetto per dispositivi ATL, il compilatore potrebbe inviare un avviso relativo alla definizione di _CE_ALLOW_SINGLE_THREADED_OBJECTS_IN_MTA. Lo stesso può verificarsi anche in scenari quali la creazione di oggetti COM, l'utilizzo di servizi Web e l'utilizzo di oggetti COM ATL nella piattaforma Windows Mobile. È possibile definire questo flag nel file di intestazione principale, per oggetti a thread singolo, come segue: #define _CE_ALLOW_SINGLE_THREADED_OBJECTS_IN_MTA. Se il codice gestisce oggetti multithreading, l'avviso può essere tranquillamente ignorato. Per ulteriori informazioni su COM, DCOM e i modelli di threading in Windows CE, vedere Thread e processi COM e Servizi componenti (COM e DCOM) nella documentazione di Windows CE 5.0.

  • Per impostazione predefinita, le applicazioni per dispositivi native vengono create utilizzando il collegamento statico. È possibile aggiungere le DLL di runtime seguenti alla proprietà File aggiuntivi del progetto se si decide di passare al collegamento dinamico:

    • Configurazioni della build e rilascio di applicazioni MFC

      Aggiungere le DLL di runtime seguenti alla proprietà File aggiuntivi del progetto: msvcr80.dll|$(BINDIR)\$(INSTRUCTIONSET)\|%CSIDL_PROGRAM_FILES%\<nomeprogetto>|0;atl80.dll|$(BINDIR)\$(INSTRUCTIONSET)\|%CSIDL_PROGRAM_FILES%\<nome progetto>|0;MFC80U.dll|$(BINDIR)\$(INSTRUCTIONSET)\|%CSIDL_PROGRAM_FILES%\<nome progetto>|0;

    • Configurazioni della build e debug di applicazioni MFC

      Aggiungere le DLL di runtime seguenti alla proprietà File aggiuntivi del progetto: msvcr80d.dll|$(BINDIR)\$(INSTRUCTIONSET)\|%CSIDL_PROGRAM_FILES%\<nomeprogetto>|0;msvcr80.dll|$(BINDIR)\$(INSTRUCTIONSET)\|%CSIDL_PROGRAM_FILES%\<nomeprogetto>|0;atl80.dll|$(BINDIR)\$(INSTRUCTIONSET)\|%CSIDL_PROGRAM_FILES%\<nomeprogetto>|0;MFC80Ud.dll|$(BINDIR)\$(INSTRUCTIONSET)\|%CSIDL_PROGRAM_FILES%\<nomeprogetto>|0;

    • Configurazioni della build e rilascio di applicazioni ATL

      Aggiungere le DLL di runtime seguenti alla proprietà File aggiuntivi del progetto: msvcr80.dll|$(BINDIR)\$(INSTRUCTIONSET)\|%CSIDL_PROGRAM_FILES%\<nomeprogetto>|0;atl80.dll|$(BINDIR)\$(INSTRUCTIONSET)\|%CSIDL_PROGRAM_FILES%\<nomeprogetto>|0;

    • Configurazioni della build e debug di applicazioni ATL

      Aggiungere le DLL di runtime seguenti alla proprietà File aggiuntivi del progetto: msvcr80d.dll|$(BINDIR)\$(INSTRUCTIONSET)\%CSIDL_PROGRAM_FILES%\<nomeprogetto>|0;msvcr80.dll|$(BINDIR)\$(INSTRUCTIONSET)\%CSIDL_PROGRAM_FILES%\<nomeprogetto>|0;atl80.dll|$(BINDIR)\$(INSTRUCTIONSET)\%CSIDL_PROGRAM_FILES%\<nomeprogetto>|0;

      Per ulteriori informazioni sul caricamento della DLL di Windows CE, vedere LoadLibrary per il caricamento della DLL per Windows CE.

      Nota:

      Il caricamento contemporaneo di più DLL con lo stesso nome da directory diverse, ad esempio \Windows\aDLL.dll e \Programmi\aDLL.dll, può provocare risultati imprevisti. È consigliabile caricare una sola copia di una DLL alla volta o attendere la chiamata della prima DLL caricata.

Di seguito vengono riportate alcune considerazioni aggiuntive:

  • Quando si esegue il porting a MFC 8.0 #, definire _WIN32_WCE_PSPC. Per impostazione predefinita, questo flag non viene definito in MFC 8.0.

  • L'opzione ARM4T non viene supportata se la destinazione è Pocket PC 2003 o Smartphone 2003 nell'elenco a discesa Compila per architettura. Per cercare l'elenco nella finestra di dialogo Pagine delle proprietà di <nome progetto>, fare clic su Proprietà di configurazione, su C/C++ e quindi su Avanzate e infine selezionare Compila per architettura.

  • Le funzioni GAPI sono utilizzabili in C++ ma non in C. L'inserimento di gx.h nel codice funziona solo da C++. Se si impiegano le funzioni GAPI nel codice, non procedere alla compilazione con l'opzione del compilatore /TC.

  • In MFC 8.0 per dispositivi è possibile controllare la creazione e l'inserimento di CommandBar. Il membro CDialog::m_pWndEmptyCB non è più supportato. Questo membro era utilizzato per puntare all'oggetto Classe CCommandBar vuoto, detto anche MenuBar in Pocket PC, creato per la finestra di dialogo e a cui era possibile fare riferimento inserendo un oggetto MenuBar personalizzato.

  • Checked::_strlwr_s, _strlwr_s_l, _mbslwr_s, _mbslwr_s_l, _wcslwr_s, _wcslwr_s_l, Checked::tcslwr_s e Checked::gcvt_s sono oggetti forniti per le piattaforme che utilizzano Windows CE.

  • Il flag _WIN32_WCE_PSPC non è più definito. È possibile utilizzare il flag _WIN32_WCE_PSPC WIN32_PLATFORM_PSPC come soluzione alternativa.

  • Per il porting di applicazioni STL, includere <deque> al posto di #include <deque.h>.

  • L'IDE supporta più piattaforme. Quando si ospitano oggetti ActiveX ATL o MFC in un progetto per dispositivi in una risorsa finestra di dialogo, è necessario creare e registrare un controllo equivalente in un progetto ActiveX per desktop equivalente. Il controllo può essere aggiunto al modello di finestra di dialogo del dispositivo nell'editor di risorse e venire eseguito correttamente. Le versioni per desktop e per dispositivi del controllo ActiveX devono disporre di GUID e proprietà in fase di progettazione, come ad esempio il colore di sfondo, uguali.

Vedere anche

Attività

Procedura: effettuare il provisioning di un dispositivo in un progetto di Visual C++

Concetti

Impostazioni di debug e distribuzione per progetti Visual C++ per dispositivi

Impostazioni di debug e distribuzione per progetti Visual C++ per dispositivi

Riferimenti

Debug, Proprietà di configurazione, finestra di dialogo Pagine delle proprietà di <nomeprogetto> (dispositivi)

Altre risorse

Debug di progetti per dispositivi

Creazione e porting di progetti per dispositivi Visual C++

Sviluppo di progetti Visual C++ per dispositivi