Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2008
    Messaggi
    117

    [C++] impossibile copiare libstdc++-6.dll

    Sto facendo un programma in c++,il programma è dentro uno zip con le 2 librerie (libgcc_s_dw2-1.dll e libstdc++-6.dll), e quindi salvo il programma sul desktop insieme alle 2 librerie per avviare il programma in c una prossima volta senza riandare nello zip.
    Per la prima non ci sono problemi a copiarla con la system.. "copy libgcc_s_dw2-1.dll C://percorso/desktop.." , mentre facendo gli stessi passi con la seconda libreria mi dice che non esiste, ho provato anche a farlo dal cmd di windows senza usare il mio programma ed effettivamente non mi riesce a copiare libstdc++-6.dll nonostante compaia nell'elenco con la "dir". Ho provato anche a rinominarla con un nome tipo "esempio.dll" e così riuscivo a copiarla, ma è un problema poi a rinominarla di nuovo in libstdc++-6.dll. Quindi credo che il problema sia la stringa libstdc++-6.dll...
    Non so come diavolo copiare quella maledetta libreria insieme all'eseguibile e all'altra libreria che per fortuna funziona.
    (ho controllato anche gli attributi di scrittura..ma niente. libstdc++-6.dll non vuole saperne di essere copiata )
    Consigli?
    Grazie in anticipo!

    un piccolo esempio
    Nonostante ci sia libstdc++-6.dll risulta inesistente, al contrario di libgcc_s_dw2-1.dll
    (ho messo il comando copy a caso, solamente per far vedere l'esempio )
    MSN - Messanger è fallito

  2. #2
    Il comando copy supporta una sintassi speciale per unire più file, sintassi che appunto impiega il +; per questo motivo, se copi file che hanno un + nel nome in quella maniera si "confonde". Come soluzione, racchiudi il nome del file da copiare tra virgolette.

    Per inciso, per copiare un file sarebbe meglio usare l'apposita API CopyFile oppure scrivere una semplice routine di copia con le normali funzioni di IO del C++.
    codice:
    void copyfile(const char * source, const char * destination)
    {
        std::ifstream f1(source, std::fstream::binary);
        std::ofstream f2(destination, std::fstream::trunc|std::fstream::binary);
        if(!f1)
            throw std::runtime_error("Impossibile aprire il file di origine.");
        if(!f2)
            throw std::runtime_error("Impossibile aprire il file di destinazione.");
        f1 << f2.rdbuf();
        if(!f1 || !f2)
            throw std::runtime_error("Errore di copia.");
    }
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2008
    Messaggi
    117
    Originariamente inviato da MItaly
    Il comando copy supporta una sintassi speciale per unire più file, sintassi che appunto impiega il +; per questo motivo, se copi file che hanno un + nel nome in quella maniera si "confonde". Come soluzione, racchiudi il nome del file da copiare tra virgolette.

    Per inciso, per copiare un file sarebbe meglio usare l'apposita API CopyFile oppure scrivere una semplice routine di copia con le normali funzioni di IO del C++.
    codice:
    void copyfile(const char * source, const char * destination)
    {
        std::ifstream f1(source, std::fstream::binary);
        std::ofstream f2(destination, std::fstream::trunc|std::fstream::binary);
        if(!f1)
            throw std::runtime_error("Impossibile aprire il file di origine.");
        if(!f2)
            throw std::runtime_error("Impossibile aprire il file di destinazione.");
        f1 << f2.rdbuf();
        if(!f1 || !f2)
            throw std::runtime_error("Errore di copia.");
    }

    Grazie a te ho risolto!!
    Alla prossima!
    MSN - Messanger è fallito

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.