PDA

View Full Version : [Visual C++ 2008] Programma non funzionante su altri PC!!Help!!!


Andy1984
23-08-2010, 12:42
Ciao a tutti!

Ho realizzato un programma in Visual C++ 2008 che confronta file excel con file di testo.

Sul mio PC funziona tutto benissimo ma quando passo il tool su altri PC da problemi.

Da cosa può dipendere questo?

Potreste aiutarmi?!!!:cry: :muro:

jackk87
23-08-2010, 19:45
Ciao a tutti!

Ho realizzato un programma in Visual C++ 2008 che confronta file excel con file di testo.

Sul mio PC funziona tutto benissimo ma quando passo il tool su altri PC da problemi.

Da cosa può dipendere questo?

Potreste aiutarmi?!!!:cry: :muro:

Ciao sei sicuro di aver installato il programma sull'altro pc con tutte le librerie che servono?
posta il tipo di errore

WarDuck
23-08-2010, 20:04
Ma parliamo di C++ puro o C++ che si poggia su .NET?

Nel secondo caso assicurati che sia installata la versione corretta.

Comunque sarebbe utile specificare il tipo di errore riscontrato.

Andy1984
24-08-2010, 08:47
Allora il programma che ho realizzato si appoggia su .Net in particolare il framework 3.5. Il problema è che non mi da un errore nel codice...

Mi spiego meglio: é un form che confronta file excel con file di testo.

Quando spingo il pulsante "Open" per aprire il file excel non me lo carica se utilizzo un altro PC. Mentre sul mio PC funziona tutto alla grande.

Per i file Excel ho utilizzato la libreria Interop della Microsoft.

Potrebbe stare in quella libreria il problema?

jackk87
24-08-2010, 10:21
Allora il programma che ho realizzato si appoggia su .Net in particolare il framework 3.5. Il problema è che non mi da un errore nel codice...

Mi spiego meglio: é un form che confronta file excel con file di testo.

Quando spingo il pulsante "Open" per aprire il file excel non me lo carica se utilizzo un altro PC. Mentre sul mio PC funziona tutto alla grande.

Per i file Excel ho utilizzato la libreria Interop della Microsoft.

Potrebbe stare in quella libreria il problema?

Sicuramente il problema è in quella libreria e per usare quella libreria è obbligatorio aver installato excel sulla macchina. Sul pc dove stai provando c'è installato excel?

rbon
24-08-2010, 11:46
Ciao,
installando Visual C++ 2008 ho visto che le impostazioni di default:
-> Configuration Properties -> General -> Project Defaults -> Use of MFC :
prevedevano "Use MFC in a Dinamic Library" e questo comporta che il programma va in cerca su altri PC delle stesse librerie che ha usato durante la compilazione.
Ho modificato il parametro in "Use MFC in a Static Library" ed il programma contiene nell'eseguibile tutte le librerie che gli servono.
btw Cerca su Google "static linking".

Andy1984
24-08-2010, 12:10
Sicuramente il problema è in quella libreria e per usare quella libreria è obbligatorio aver installato excel sulla macchina. Sul pc dove stai provando c'è installato excel?

Si si è installato excel.

Andy1984
24-08-2010, 12:13
Ciao,
installando Visual C++ 2008 ho visto che le impostazioni di default:
-> Configuration Properties -> General -> Project Defaults -> Use of MFC :
prevedevano "Use MFC in a Dinamic Library" e questo comporta che il programma va in cerca su altri PC delle stesse librerie che ha usato durante la compilazione.
Ho modificato il parametro in "Use MFC in a Static Library" ed il programma contiene nell'eseguibile tutte le librerie che gli servono.
btw Cerca su Google "static linking".

Ciao rbon non ho capito che vuoi dire...

Cioè modificando l'opzione dell'uso delle MFC con librerie statiche dovrebbe funzionare?

rbon
24-08-2010, 12:18
Ciao rbon non ho capito che vuoi dire...

Cioè modificando l'opzione dell'uso delle MFC con librerie statiche dovrebbe funzionare? SI

Andy1984
24-08-2010, 12:39
SI

Ho provato...non funziona!:cry: :cry: :cry: :cry: :cry: :cry: :muro: :muro: :muro: :muro:

rbon
24-08-2010, 13:00
Allora il programma che ho realizzato si appoggia su .Net in particolare il framework 3.5. Il problema è che non mi da un errore nel codice...

l'errore è mio.
Non avevo prestato attenzione al fatto che il programma deve funzionare per .NET.
Quel parametro che di avevo consigliato di cambiare non andava modificato.
Osservo però che:
1. sui PC destinatari deve essere presente la stessa versione di .NET Framework o superiore (era uscita la .NET SP1 e poi la 4.0 con Visual C++ 2010)
2. sui PC destinatari deve essere presente un Windows non superiore a Windows Vista (Visual C++ 2008 non può compilare per Windows 7 a meno di non installare anche Windows SDK per Windows 7 e riconfigurare Visual C++ 2008).
Purtroppo non ti posso più aiutare perchè non conosco .NET.

Andy1984
25-08-2010, 08:37
l'errore è mio.
Non avevo prestato attenzione al fatto che il programma deve funzionare per .NET.
Quel parametro che di avevo consigliato di cambiare non andava modificato.
Osservo però che:
1. sui PC destinatari deve essere presente la stessa versione di .NET Framework o superiore (era uscita la .NET SP1 e poi la 4.0 con Visual C++ 2010)
2. sui PC destinatari deve essere presente un Windows non superiore a Windows Vista (Visual C++ 2008 non può compilare per Windows 7 a meno di non installare anche Windows SDK per Windows 7 e riconfigurare Visual C++ 2008).
Purtroppo non ti posso più aiutare perchè non conosco .NET.

Mannaggia!! Va bene grazie lo stesso! Però mi sembra strano che non si possa risolvere questo problema. Perchè ora che faccio installo visual su tutti i PC destinatari?!!:muro: :muro: :rolleyes: :rolleyes:

rbon
25-08-2010, 12:44
Non devi installare Visual C++ sui PC target, ma solo .NET Framework che è una corposa libreria che contiene i runtime per far funzionare le applicazioni .NET.
La versione .NET Framework 3.5 ingloba tutti i runtime per le precedenti versioni di .NET (la ver. 1.0, la 2.0 e la 3.0) e cioè ha la compatibilità verso il basso.
Per saperne di più visita Wikipedia http://en.wikipedia.org/wiki/.NET_Framework oppure su Google, ricerca avanzata indicando:
- che contengano la seguente frase: "net framework runtime"
- dominio: "www.microsoft.com"
(le doppie virgolette non vanno digitate).
Comunque visto che hai compilato con Visual C++ 2008 la libreria sarà "Microsoft .NET Framework 3.5 Service Pack 1" a questo link http://www.microsoft.com/downloads/details.aspx?displaylang=it&FamilyID=ab99342f-5d1a-413d-8319-81da479ab0d7 (per l'italiano).
Ricordati che la libreria dovrà essere scaricata con lo stesso linguaggio del Sistema Operativo (immagino italiano).
Ti consiglio di fare la prova su 1 (uno) solo PC target.

tomminno
25-08-2010, 13:37
2. sui PC destinatari deve essere presente un Windows non superiore a Windows Vista (Visual C++ 2008 non può compilare per Windows 7 a meno di non installare anche Windows SDK per Windows 7 e riconfigurare Visual C++ 2008).
Purtroppo non ti posso più aiutare perchè non conosco .NET.

Puoi benissimo utilizzare un software compilato per XP anche su 7. E se non fai uso di librerie molto particolari (es iphelper api, ma non credo proprio che il suo scopo sia quello di scrivere un firewall) il cui supporto è stato deprecato in Vista e non più supportato in 7 tutto funziona.
Le tradizionali Win32 sono ancora tutte lì.

Andy1984
25-08-2010, 14:12
Non devi installare Visual C++ sui PC target, ma solo .NET Framework che è una corposa libreria che contiene i runtime per far funzionare le applicazioni .NET.
La versione .NET Framework 3.5 ingloba tutti i runtime per le precedenti versioni di .NET (la ver. 1.0, la 2.0 e la 3.0) e cioè ha la compatibilità verso il basso.
Per saperne di più visita Wikipedia http://en.wikipedia.org/wiki/.NET_Framework oppure su Google, ricerca avanzata indicando:
- che contengano la seguente frase: "net framework runtime"
- dominio: "www.microsoft.com"
(le doppie virgolette non vanno digitate).
Comunque visto che hai compilato con Visual C++ 2008 la libreria sarà "Microsoft .NET Framework 3.5 Service Pack 1" a questo link http://www.microsoft.com/downloads/details.aspx?displaylang=it&FamilyID=ab99342f-5d1a-413d-8319-81da479ab0d7 (per l'italiano).
Ricordati che la libreria dovrà essere scaricata con lo stesso linguaggio del Sistema Operativo (immagino italiano).
Ti consiglio di fare la prova su 1 (uno) solo PC target.

Allora il NET Framework 3.5 SP1 l'ho installato e non funziona lo stesso...

Poi ho letto qui: http://msdn.microsoft.com/it-it/library/ms235264(v=VS.90).aspx
che bisogna inserire la libreria mfcmifc90.dll dove è contenuto l'eseguibile.

Io questa libreria non ce l'ho nel mio PC...dove la posso trovare?

Andy1984
27-08-2010, 07:52
non mi può aiutare nessuno?....:help: :help: :help:

tomminno
27-08-2010, 08:18
Allora il NET Framework 3.5 SP1 l'ho installato e non funziona lo stesso...

Poi ho letto qui: http://msdn.microsoft.com/it-it/library/ms235264(v=VS.90).aspx
che bisogna inserire la libreria mfcmifc90.dll dove è contenuto l'eseguibile.

Io questa libreria non ce l'ho nel mio PC...dove la posso trovare?

Scusa ma sai esattamente cosa hai fatto durante lo sviluppo?
Hai creato un programma .NET o MFC? Fin'ora hai detto di aver creato un progetto .NET, quella libreria serve per progetti MFC.
E poi cosa intendi esattamente per "non funziona"? Che messaggio ti appare?

Andy1984
27-08-2010, 08:39
Scusa ma sai esattamente cosa hai fatto durante lo sviluppo?
Hai creato un programma .NET o MFC? Fin'ora hai detto di aver creato un progetto .NET, quella libreria serve per progetti MFC.
E poi cosa intendi esattamente per "non funziona"? Che messaggio ti appare?
No no è .NET perchè ho fatto un form. Non funziona su altri PC ad esempio:

L'eseguibile parte, poi quando faccio caricare un file Excel non me lo carica. Mentre sul mio PC funziona tutto benissimo. Questo è il problema.
Per aprire il file excel ho utilizzato l'Interop. Nell'altro PC non è installato Visual ed il sistema operativo è lo stesso come anche la versione di Office.

tomminno
27-08-2010, 08:44
No no è .NET perchè ho fatto un form. Non funziona su altri PC ad esempio:

L'eseguibile parte, poi quando faccio caricare un file Excel non me lo carica. Mentre sul mio PC funziona tutto benissimo. Questo è il problema.
Per aprire il file excel ho utilizzato l'Interop. Nell'altro PC non è installato Visual ed il sistema operativo è lo stesso come anche la versione di Office.

Quindi non è un problema di dipendenze mancanti, dato che il programma si avvia.
Dovresti postare un pò di codice perchè sicuramente stai sbagliando qualcosa.

Andy1984
27-08-2010, 09:06
Quindi non è un problema di dipendenze mancanti, dato che il programma si avvia.
Dovresti postare un pò di codice perchè sicuramente stai sbagliando qualcosa.

Il problema è che sono circa 13 mila righe di codice...

potrebbe dipendere dal fatto che quando compilo ho dei warning relativi alla libreria interop? però sul mio PC funziona...
Ti posto uno dei warning:
c:\documents and settings\andrea\documenti\visual studio 2008\projects\check_sheet\Form1.h(705) : warning C4691: 'Microsoft::Office::Core::Scripts': tipo di riferimento previsto in assembly 'Office' non di riferimento, utilizzato il tipo definito nell'unità di conversione corrente
Messaggio diagnostico generato durante l'importazione del tipo 'Microsoft::Office::Interop::Excel::_Worksheet ' dall'assembly 'Microsoft.Office.Interop.Excel, Version=10.0.4504.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'.

Potrebbe essere questo il problema secondo te?

tomminno
27-08-2010, 09:30
Il problema è che sono circa 13 mila righe di codice...

potrebbe dipendere dal fatto che quando compilo ho dei warning relativi alla libreria interop? però sul mio PC funziona...
Ti posto uno dei warning:
c:\documents and settings\andrea\documenti\visual studio 2008\projects\check_sheet\Form1.h(705) : warning C4691: 'Microsoft::Office::Core::Scripts': tipo di riferimento previsto in assembly 'Office' non di riferimento, utilizzato il tipo definito nell'unità di conversione corrente
Messaggio diagnostico generato durante l'importazione del tipo 'Microsoft::Office::Interop::Excel::_Worksheet ' dall'assembly 'Microsoft.Office.Interop.Excel, Version=10.0.4504.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'.

Potrebbe essere questo il problema secondo te?

Non ne ho idea.
Ma il tuo software ha dei log? Magari hai un qualche try/catch di troppo che non ti consentono di vedere dove sta l'errore.
Dovresti provare tramite log a vedere dov'è che fallisce il caricamento.