【问题标题】:Check if file exists in C++检查文件是否存在于 C++ 中
【发布时间】:2013-06-04 23:52:18
【问题描述】:

我对 C++ 非常陌生。 在我当前的项目中,我已经包含了

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

我只需要在我的 main() 的开头快速检查一下,看看我的程序目录中是否存在所需的 dll。 那么对我来说最好的方法是什么?

【问题讨论】:

  • 您的意思是链接到您的程序所需的 DLL 吗?还是您计划使用 LoadLibrary 动态加载的?
  • One way。根据您的需要,如果找不到文件,某些调用也会失败。
  • 我要将 dll 注入另一个进程。如果 dll 不存在,我只想结束我的程序。在我的程序执行其他任何操作之前,我只想快速检查一下。我将如何使用 PathFileExists?由于路径并不总是相同的......
  • 尝试加载 DLL,因为无论如何您都必须这样做。如果加载失败,错误码会告诉你原因。

标签: c++ file file-exists


【解决方案1】:

因此,假设可以简单地检查具有正确名称的文件是否存在于同一目录中:

#include <fstream>

...

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

如果您想知道它实际上是一个真正的 DLL(而不是打开命令提示符并执行 type NUL: &gt; myname.dll 来创建一个空文件),您可以使用:

HMODULE dll = LoadLibrary(".\\myname.dll");

if (!dll)
{
   ... dll doesn't exist or isn't a real dll.... 
}
else
{
   FreeLibrary(dll);
}

【讨论】:

    【解决方案2】:

    有很多方法可以实现,但使用 boost 库总是一个好方法。

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

    【讨论】:

      猜你喜欢
      • 2013-09-19
      • 1970-01-01
      • 1970-01-01
      • 2011-04-07
      • 2011-05-14
      • 1970-01-01
      • 2012-05-03
      • 2011-07-01
      • 2020-03-20
      相关资源
      最近更新 更多