Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 21
  1. #1

    Problemi migrazione da VC++6.0 (Windows Xp 32 bit) a VS2008 ( Windows7 64 bit)

    Ho un'applicazione su piattaforma Windows Xp (32 bit) scritta in VC++6.0 con MFC che usa le librerie grafiche HEIDI 5.0.
    Sto cercando di migrarla sotto VS2008 su Windows7 a 64 bit, ma ho grossissimi problemi.
    La piattaforma che mi presenta il VS2008 è sempre a 32 bit, non ne presenta altre.

    In particolare prima della Initinstance() già nel costruttore dell'applicazione, quindi proprio all'inizio del caricamento del programma, le variabili assumono valori strani.

    Ho la sensazione come se l'applicazione non abbia i corretti riferimenti di memoria. Come se il file prodotto da VS2008 non venga caricato correttamente in memoria.

    Sia in compilazione che in link non ho errori bloccanti. In compilazione ho una miriade di Warning dovuti all'uso di funzioni che il VS2008 indica come deprecated, ma nessun errore bloccante.

    Domanda.

    Non è che occorre settare opportunamente qualche flag o aggiungere dei parametri di compilazione per consentire la corretta produzione di un'applicazione che ha origine dal VC++6.0?




  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Devi precisare meglio i problemi, altrimenti non c'è nulla di preciso da consigliarti ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Il problema in soldoni è che migrando da VC++6.0 a VC++2008 il programma non funziona, ha comportamenti strani. Le variabili in memmoria assumono valori incoerenti.

    Hai presente quando per errore in una funzione passi i paramentri in modo errato? (Per esempio un float al posto di un double, ecc...)
    Poi nel debug ti accorgi che le variabili non hanno i valori che ti aspetti.

    Prima ancora della Initinstance(), che in un'applicazione MFC costituisce una delle funzioni preliminari di un programma, ho questi problemi. Le variabili non hanno i valori che mi aspetto...

    Spero di essere stato più esaustivo. Daltronde per comprendere appieno quello che scrivo occorre avere esperienza di programmazione con Visual Studio e MFC...

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Originariamente inviato da IlViandante2960
    Spero di essere stato più esaustivo.
    Senza provare il codice, non si può fare nessuna ipotesi.

    Se non ho capito male, il progetto era a 32 bit ed è rimasto a 32 bit (pur lavorando su un sistema a 64) ... giusto?

    Daltronde per comprendere appieno quello che scrivo occorre avere esperienza di programmazione con Visual Studio e MFC...
    Questa non l'ho capita ... che intendi ?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Si l'applicazione è nata a 32 bit ed ancora Visual Studio 2008 la vede a 32 bit, solo che il SO sul quale gira tutto è Windows7 a 64 bit....

    Questa non l'ho capita ... che intendi ?
    Semplicemente che se si programma utilizzando le MFC si comprende perchè faccio riferimento alla funzione InitInstance()... Non vuole essere discriminante per gli utenti del forum, ma solo definire il linguaggio comune per intendersi...

    I problemi li ho ancora prima della InitInstance() che come scritto è una delle prime funzioni ad essere eseguite nel caricamento del programma.

    Prima della InitInstance() c'è solo il costruttore dell'applicazione e già lì le variabili hanno valori sporchi...




  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Ok ... ma se non posti il codice (è l'ultima volta che te lo dico), non ti posso aiutare ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  7. #7


    int RetCode = 0;
    double V1 = 0.0, V2 = 0.0;
    StruTabellaComuni *pTC = NULL;

    pTC = new StruTabellaComuni ("Prova", RetCode);
    if ( pTC == NULL || RetCode > 0 )
    AfxMessageBox("Errore nel costruttore: StruTabellaComuni");

    pTC->setLatitudine (1.1);
    pTC->setLongitudine(2.2);
    V1 = pTC->getLatitudine();
    V2 = pTC->getLongitudine();

    Ecco il codice: in V1 e V2 non ritrovo i valori assegnati.
    StruTabellaComuni è una classe da me creata.

    Questo codice si trova nel costruttore dell'applicazione prima che venga eseguita la InitInstance();
    E' questa singolarità che mi fa pensare che in qualche modo l'eseguibile o non viene caricato bene in memoria o non viene creato correttamente.
    Per cui i riferimenti di memoria sono alterati... Ma non riesco ad individuarne la causa perchè come ho scritto non ho errori bloccanti in fase di compilazione e link....



  8. #8
    Vai di debug a manetta, tieni d'occhio V1 e V2 da quando iniziano ad esistere (momento in cui non possono avere un valore diverso da 0 a meno di bug del compilatore) fino a quando cambiano valore.
    Amaro C++, il gusto pieno dell'undefined behavior.

  9. #9
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Intanto, penso che questa chiamata

    pTC = new StruTabellaComuni ("Prova", RetCode);

    sia sbagliata e debba essere

    pTC = new StruTabellaComuni ("Prova", &RetCode);

    Poi, scusa se sono pignolo, ma non ritrovi i valori assegnati nelle righe

    V1 = pTC->getLatitudine();
    V2 = pTC->getLongitudine();

    ?

    E se è così, quali sono i valori, come li controlli dopo queste righe?

    In alternativa, posta il progetto e si fa un debugging del codice ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  10. #10
    pTC = new StruTabellaComuni ("Prova", &RetCode);
    Con & ho errore. Il RetCode è passato per valore non per indirizzo.

    Comincio a pensare che l'installazione del VS2008 non sia andata a buon fine anche se la cosa mi pare un pò strana. Il VS2008 pare funzionare correttamente....

    Mi sa che alla fine più che migrare il software da VC++6.0 a VS2008 migrerò io in Papauasia....

    Vabbè continuo le prove cercando di cavare il ragno dal buco...


Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.