[c++] applicazione che funziona ma non su altri pc

di il
11 risposte

[c++] applicazione che funziona ma non su altri pc

Salve,
vorrei un aiuto.
Ho scritto una applicazione in C++ con visual studio, una dialogbox con textbox, pulsanti ecc...roba semplice modello base.... Ho compilato la release e lanciata sullo stesso pc funziona, quando pero sposto il file su un altro pc l'applicazione non funziona piu e mi da un errore di libreria non trovata (sotto l' immagine), VCRUNTIME140.dll. Entrambi i pc sono con win 10.

Ho fatto un po di ricerche ma non ho trovato molto, quello che mi pare di aver capito è che la mia applicazione dipende ancora da librerie installate con il pacchetto di visual studio, su pc dove non c'è all'applicazione mancano delle risorse (l'applicazione quindi dipende da .NET Framework?).
Quando ho creato il progetto l'ho fatto usando il modello di VS "progetto CLR vuoto", probabilmente se avessi usato il modello "applicazione desktop di windows" non avrei avuto problemi, ma questo modello è parecchio incasinato di risorse e di roba precompilata e ci capisco poco visto che sono in fase di apprendimento.... e quindi ho preferito usare il modello vuoto che mi permette di andare per gradi.

La domanda è... posso far funzionare il mio file .exe su altri pc? se si come faccio ad includere nell'eseguibile tutte le risorse necessarie?

grazie
Allegati:
16677_882bee260346e7af0b0aa4063ea953c3.jpg
16677_882bee260346e7af0b0aa4063ea953c3.jpg

11 Risposte

  • Re: [c++] applicazione che funziona ma non su altri pc

    Devi semplicemente scaricare ed installare il pacchetto

    Visual C++Redistributable 2015

    x86 o x64 (se l'applicazione è a 32 o 64 bit)
  • Re: [c++] applicazione che funziona ma non su altri pc

    Intanto grazie della rispostas.. ma questo pacchetto ce l'ho già installato anche sul PC dove non ho visual studio. e poi vorrei fare una applicazione autosufficiente.
  • Re: [c++] applicazione che funziona ma non su altri pc

    Finché utilizzi user32.dll non creerai mai una applicazione autonoma.

    Siccome stai utilizzando C++/CLI e non C++ puro sono richiesti framework per funzionare.
  • Re: [c++] applicazione che funziona ma non su altri pc

    Il c++.net non è proprio una grande scelta...
  • Re: [c++] applicazione che funziona ma non su altri pc

    Va beh... gia in altri post mi è stato detto che il c++ non è un ottima scelta... ma l'ho studiato a scuola e ho voglia di spippolare un po e sono partito da dove ho qualche base....

    detto questo torniamo al mio problema....
    il problema è nella configurazione di visual studio perche ho fatto un po di prove
    - scritto semplice codice, il classico std::cout<<"ciao" e provato a lanciare l'eseguibile su altro pc, NON VA
    - scritto solito codice con DEV C++, lanciato eseguibile sull'altro pc, FUNZIONA
    - creato applicazione windows partendo dal modello proposto da visual studio (appare una dialog box vuota), lanciato eseguibile su altro pc NON VA
    - fatto stessa cosa con DEV C++ con modello per applicazione desktop windows (appare finestra vuota), lanciato eseguibile su altro pc FUNZIONA
    - ho notato che gli eseguibili creati con DEV C++ sono circa 1000 KB mentre, la solita creata con VS è di 100 KB

    ritorno quindi alla domanda origine.... come devo configurare visual studio affinche l'eseguibile funzioni au tutti i pc?
  • Re: [c++] applicazione che funziona ma non su altri pc

    xsandrox ha scritto:


    Va beh... gia in altri post mi è stato detto che il c++ non è un ottima scelta...
    oregon si riferiva al C++.net non al C++, sono due cose molto diverse. Il C++ è un linguaggio molto potente. Se usi il C++/CLI vanifichi tutti tuoi sforzi ottenendo lo stesso risultato che avresti potuto ottenere con il Visual Basic . NET.
  • Re: [c++] applicazione che funziona ma non su altri pc

    Unqualunque ha scritto:


    xsandrox ha scritto:


    Va beh... gia in altri post mi è stato detto che il c++ non è un ottima scelta...
    oregon si riferiva al C++.net non al C++, sono due cose molto diverse. Il C++ è un linguaggio molto potente. Se usi il C++/CLI vanifichi tutti tuoi sforzi ottenendo lo stesso risultato che avresti potuto ottenere con il Visual Basic . NET.
    Esatto ....

    Se vuoi programmare in c++ nativo usa un progetto win32 c++ con visual studio non un progetto c++/cli
  • Re: [c++] applicazione che funziona ma non su altri pc

    Visto che soluzioni pratiche non sono giunte (fatto tutte le prove possibili con i vari template di progetti disponibili).... me lo sono risolto da solo il problema, o meglio, ho postato sul forum internazionale di MSDN il problema e un'anima pia mi ha indirizzato alla soluzione per cui ho potuto capire. purtroppo a causa poco tempo a disposizione ci ho messo un po ma sono giunto alla soluzione....
    Le librerie di runtime non vengono incluse nel progetto, forse perche la microsoft presuppone che uno le abbia installate sull' SO, cosa che evidentemente non è perche sull'altro pc, regolarmente aggiornato ma senza visual studio, non ci sono. Quindi vanno incluse modificando questa impostazione del progetto

    C/C++ > generazione codice > libreria di runtime > da DLL multithread (/MD) a multithread (/MT)

    con questa modifica i file exe vanno su entrambi i pc e anche su uno vecchio con windows 7
  • Re: [c++] applicazione che funziona ma non su altri pc

    Questa non è' una vera e propria soluzione.

    Con /MD il tuo eseguibile ha le dimensioni necessarie al tuo codice e le librerie se le attende sul PC. Queste librerie possono essere installate sul PC di destinazione individuando il Runtime nella versione corretta.

    Con /MT inserisci nel tuo eseguibile TUTTE le librerie necessarie e questo diventa enorme e anche se esistono nel PC di destinazione usa quelle incluse nell'exe.

    Il link statico delle librerie è un vecchio modo di creare programmi. Le DLL sono state inventate per questo.
  • Re: [c++] applicazione che funziona ma non su altri pc

    Capisco che ha dei limiti ma almeno è una soluzione al mio problema.
    te che soluzione proponi?

    io il progetto creato come win32 l'ho fatto, ma l'exe su l'altro pc senza la modifica della libreria di runtime non va.

    Quello che è stato scritto fino ad ora è sicuramente vero... ma se non mi viene spiegato come si fa in pratica, non mi serve. D'altronde se fossi stato bravo lo avrei potuto mettere in pratica da solo... ma, probabilmente, essendo già capace non avrei chiesto aiuto .
  • Re: [c++] applicazione che funziona ma non su altri pc

    Ti ho già detto la soluzione. Quella che adottano tutti.

    Devi installare il runtime, se l'hai fatto e non funziona, vuol dire che l'hai fatto male. O tutti i miei programmi e i programmi del mondo non funzionano?
Devi accedere o registrarti per scrivere nel forum
11 risposte