C++ Controlla se il file non esiste

Sono molto nuovo per C++.
Nel mio progetto in corso che ho già incluso

#include <iostream>
#include <Windows.h>
#include <TlHelp32.h>

e ho solo bisogno di fare un rapido controllo per l’inizio del mio main() per vedere se una richiesta dll presente nella directory del mio programma.
Quindi, quale sarebbe il modo migliore per me per fare che?

Vuoi dire una DLL necessaria per il programma che è linkata? O uno che si intende caricare dinamicamente con LoadLibrary?
modo. A seconda di ciò che si desidera, alcune chiamate non riuscire se un file non viene trovato, troppo.
Ho intenzione di iniettare la dll in un altro processo. E voglio semplicemente a termine il mio programma, se la dll non esiste. Voglio solo un rapido controllo che prima che il mio programma non fa niente altro. Come faccio a utilizzare PathFileExists? Dato che il percorso non è sempre la stessa…
Provare a caricare la DLL, dal momento che si hanno a che fare, comunque. Se non riesce a caricare, il codice di errore vi dirà perché.

OriginaleL’autore forivin | 2013-06-08

2 Replies
  1. 8

    Quindi, supponendo che va bene, basta verificare che il file con il nome presente nella stessa directory:

    #include <fstream>
    
    ...
    
    void check_if_dll_exists()
    {
        std::ifstream dllfile(".\\myname.dll", std::ios::binary);
        if (!dllfile)
        {
             ... DLL doesn't exist... 
        }
    }

    Se volete sapere che è in REALTÀ un vero DLL (piuttosto che di qualcuno aprire un prompt dei comandi e fare type NUL: > myname.dll per creare un file vuoto), è possibile utilizzare:

    HMODULE dll = LoadLibrary(".\\myname.dll");
    
    if (!dll)
    {
       ... dll doesn't exist or isn't a real dll.... 
    }
    else
    {
       FreeLibrary(dll);
    }

    OriginaleL’autore Mats Petersson

  2. 6

    Ci sono molti modi per farlo, ma utilizzando la libreria boost è sempre un buon modo.

    #include <boost/filesystem.hpp>
    using boost::filesystem;
    
    if (!exists("lib.dll")) {
        std::cout << "dll does not exists." << std::endl;
    }

    OriginaleL’autore chao

Lascia un commento