Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2009
    Messaggi
    5

    Dipendenze dei progetti MSVC

    Ciao a tutti.
    Recentemente, per riuscire a compilare un paio di programmi con wxWidgets, ho dovuto passare da Mingw a MS Visual C++ (ovviamente non per colpa di wxW ma di altre dipendenze).
    Nel trasportare l'eseguibile dal PC sul quale è stato compilato ad un altro (senza MSVC installato, ma con la stessa architettura hardware e lo stesso OS) il programma si chiude con un errore generico, che non specifica che mancano dipendenze. In realtà tutte le librerie che ho aggiunto sono linkate in maniera statica e/o caricate in esecuzione; se fossero queste a mancare genererebbero un errore ben chiaro. Salvo errori madornali il target è Release, senza attributi di debug.
    La conclusione è che manca una (o un set di) libreria di MSVC, con il quale il codice è collegato dal compilatore. Lo stesso errore si verifica anche con i programmi di esempio di wxWidgets.

    Penso che installando MSVC redist. pack. il problema si risolva, ma vorrei non avere questa incombenza. C'è un modo per avere l'eseguibile funzionante "fuori dalla scatola"? O forse devo controllare tutta la catena delle compilazioni perché il programma deve funzionare anche su un altro PC e con questi errori deve esserci una libreria compilata in debug?

    Quasi certamente mi direte che il problema è di facile soluzione e/o che è stato già affrontato diverse volte; abbiate pazienza: converrete con me che non è facilissimo trovare le parole chiave per un tema del genere...

  2. #2
    Utente di HTML.it L'avatar di shodan
    Registrato dal
    Jun 2001
    Messaggi
    2,381
    Devi linkare con la versione statica della libreria, non quella DLL.
    This code and information is provided "as is" without warranty of any kind, either expressed
    or implied, including but not limited to the implied warranties of merchantability and/or
    fitness for a particular purpose.

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2009
    Messaggi
    5
    Perdona l'ignoranza: quale libreria? Perchè wxWidgets è compilato come libreria statica; inoltre l'assenza di dipendenze in genere risulta con errore del tipo "NomeLibreria.dll non è stato trovato", con il consiglio di reinstallare l'applicazione. Invece l'errore non da informazioni del tipo.
    Quello che non capisco è perchè MSVC dovrebbe linkarmi con le sue librerie... Le librerie di Win32 dovrebbero essere linkate in maniera statica; in ogni caso le dll dovrebbero esistere su tutte le piattaforme Win32... (Questo è quello che penso, probabilmente sbaglio...)

  4. #4
    Utente di HTML.it L'avatar di shodan
    Registrato dal
    Jun 2001
    Messaggi
    2,381
    La libreria di runtime di MSVC può essere una DLL (sia per debug sia per release), sia statica (sia per debug sia per release). Di default il compilatore usa la DLL.

    Per cambiare impostazione:
    ALT+F7 -> Configuration properties -> C/C++ -> Code Generation.
    Cambia la runtime library da DLL a static (non DLL).
    This code and information is provided "as is" without warranty of any kind, either expressed
    or implied, including but not limited to the implied warranties of merchantability and/or
    fitness for a particular purpose.

  5. #5
    Utente di HTML.it
    Registrato dal
    Jun 2009
    Messaggi
    5
    Ho capito, grazie. Questa sera provo e verifico che vada tutto bene.
    Non capisco bene perchè dovrebbe essere linkata di default la DLL e poi non essere inserita nell'OS dal produttore...

    Senza offendere nessuno: 10gg per realizzare il programmino su linux con CMake e GCC; 3 mesi per trasferirlo su Win32 con MSVC... (ovviamente a tempo perso e senza mai avere usato la mastodontica suite MSVC).

  6. #6
    Utente di HTML.it L'avatar di shodan
    Registrato dal
    Jun 2001
    Messaggi
    2,381
    Originariamente inviato da WidgetX
    Ho capito, grazie. Questa sera provo e verifico che vada tutto bene.
    Non capisco bene perchè dovrebbe essere linkata di default la DLL e poi non essere inserita nell'OS dal produttore...
    Perché non è una libreria di runtime per un linguaggio interpretato. Usare la DLL o no è una scelta del programmatore, non del linguaggio in se.

    Senza offendere nessuno: 10gg per realizzare il programmino su linux con CMake e GCC; 3 mesi per trasferirlo su Win32 con MSVC... (ovviamente a tempo perso e senza mai avere usato la mastodontica suite MSVC).
    A me l'unica cosa che compilava liscia su Linux era il kernel. Quasi tutti i programmi che cercavo di compilare richiedevano sempre delle librerie da mettere da qualche parte.
    Quando ho cominciato a racapezzarmi, sono diminuiti anche i problemi.
    Semplicemente ogni sistema ha la sua filosofia.
    This code and information is provided "as is" without warranty of any kind, either expressed
    or implied, including but not limited to the implied warranties of merchantability and/or
    fitness for a particular purpose.

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 © 2024 vBulletin Solutions, Inc. All rights reserved.