Condividi tramite


Ridistribuzione di file Visual C++

Aggiornamento: novembre 2007

Quando si sviluppa un'applicazione con Visual C++, si ha il vantaggio di lavorare in un computer che non solo è un buon ambiente di sviluppo, ma risulta anche particolarmente adatto per l'esecuzione e il test di applicazioni. Tuttavia, quando si decide di distribuire l'applicazione in altri computer, è necessario ridistribuire tutti i file necessari per il supporto dell'applicazione nel sistema di destinazione. Per ulteriori informazioni sui file da ridistribuire con l'applicazione, vedere Esempi di distribuzione e Determinazione delle DLL da ridistribuire.

È possibile ridistribuire con l'applicazione solo alcuni file Visual C++. Per informazioni sui file che è possibile ridistribuire con l'applicazione, consultare le Condizioni di licenza software Microsoft per Visual Studio 2005 e il file Redist.txt. EULA.txt è disponibile nella directory \Setup del primo CD o del DVD di Visual C++ 2008 mentre Redist.txt è disponibile nella directory Program Files\Microsoft Visual Studio 2005 del secondo CD oppure sul DVD.

È possibile ridistribuire i file Visual C++ mediante i moduli unione ridistribuibili forniti, utilizzando Visual C++ Redistributable Package oppure tramite la distribuzione di specifici assembly Visual C++ come assembly side-by-side privati nella cartella locale dell'applicazione.

Nota:

Una cartella locale dell'applicazione è una cartella che contiene un file eseguibile dell'applicazione. Gli assembly side-by-side privati devono essere distribuiti all'interno della cartella locale dell'applicazione o in una delle sottocartelle. Per ulteriori informazioni sulle regole di denominazione che si applicano alle sottocartelle contenenti assembly side-by-side privati, vedere Assembly Searching Sequence.

Nel primo caso è necessario includere un modulo unione con un assembly specifico Visual C++ in un package di Windows Installer o in un package di installazione simile utilizzato per la distribuzione dell'applicazione in un altro computer. Per ulteriori informazioni, vedere Ridistribuzione tramite moduli unione. Per un esempio di questa distribuzione, vedere Procedura: distribuire un progetto di installazione e distribuzione.

Visual C++ Redistributable Package (VCRedist_x86.exe, VCRedist_x64.exe, VCRedist_ia64.exe) deve essere eseguito nel sistema di destinazione come prerequisito per l'installazione dell'applicazione. Questo package installa e registra tutte le librerie di Visual C++.

Nota:

È consigliabile utilizzare questo pacchetto per ridistribuire le librerie Visual C++ per le applicazioni che si compilano con Visual C++ Express e per i casi in cui si desidera distribuire contemporaneamente tutte le librerie Visual C++.

Per un esempio di come utilizzare questo pacchetto, vedere Procedura: distribuire tramite XCopy.

Quando si distribuiscono le librerie di Visual C++ come assembly side-by-side privati, tutte le DLL e il file manifesto che costituiscono tale assembly devono essere aggiunti a Windows Installer o a un pacchetto di installazione simile. Devono essere distribuiti nel computer di destinazione in una sottodirectory nella cartella locale dell'applicazione, attenendosi alle regole per la distribuzione di assembly privati. Per informazioni sui file manifesto e DDL di Visual C++ che costituiscono gli assembly di Visual C++, vedere Visual C++ Libraries as Shared Side-by-Side Assemblies. Per una descrizione delle regole da rispettare durante la distribuzione di assembly privati per il caricamento in fase di esecuzione, vedere Assembly Searching Sequence. Per un esempio di come distribuire le librerie di Visual C++ come assembly privati, vedere Procedura: distribuire tramite XCopy.

Errori di runtime potenziali

Se nell'applicazione è presente un manifesto ma una libreria di Visual C++ richiesta non è installata nella cartella WinSxS, è possibile che venga generato uno dei messaggi di errore seguenti a seconda della versione di Windows in cui si sta tentando di eseguire l'applicazione:

  • Applicazione non correttamente inizializzata (0xc0000135).

  • Avvio non riuscito dell'applicazione perché la configurazione non è corretta. Il problema potrebbe essere risolto reinstallando l'applicazione.

  • Impossibile eseguire il programma specificato.

Se nell'applicazione non è presente alcun manifesto, l'errore che viene visualizzato dipende dal fatto che la libreria di Visual C++ da cui dipende l'applicazione sia distribuita nella cartella locale dell'applicazione o in una cartella condivisa quale la cartella System o la cartella WinSxS.

Nota:

La ridistribuzione di applicazioni C/C++ compilate senza manifesto non è supportata. Le librerie di Visual C++ non possono essere utilizzate da applicazioni C/C++ senza un manifesto che associ l'applicazione a tali librerie. Per ulteriori informazioni, vedere la classe Scelta di un metodo di distribuzione.

Se una DLL di libreria di Visual C++, ad esempio MSVCR90.DLL, è raggiungibile (ovvero è installata nella cartella locale dell'applicazione o nella cartella System), è possibile che venga visualizzato il seguente messaggio di errore:

R6034 Tentativo da parte di un'applicazione di caricare la libreria di runtime C in modo non corretto.

Se la DLL non è raggiungibile e Windows non è in grado di caricare tale DLL per l'applicazione, è possibile che venga visualizzato il seguente messaggio di errore:

Avvio non riuscito dell'applicazione a causa di MSVCR90.dll non trovata. Il problema potrebbe essere risolto reinstallando l'applicazione.

Per risolvere questi errori, è necessario assicurarsi che l'applicazione sia compilata correttamente e che le librerie di Visual C++ siano distribuite correttamente nel sistema di destinazione. Per identificare la causa principale di questi errori di runtime, eseguire le operazioni descritte in Risoluzione dei problemi relativi alle applicazioni isolate C/C++ e agli assembly side-by-side.

In questa sezione

Vedere anche

Concetti

Esempi di distribuzione

Risoluzione dei problemi relativi alle applicazioni isolate C/C++ e agli assembly side-by-side

Altre risorse

Distribuzione (C++)