【问题标题】:How to find file in same directory using C++?如何使用 C++ 在同一目录中查找文件?
【发布时间】:2020-12-31 05:10:58
【问题描述】:

所以我正在使用 C++ 来尝试查找文件。但是,在我朋友的计算机上,他将文件保存在与我所在的目录不同的目录中。最重要的是,他的用户名与我不同,因此我的搜索 C:\Users\Zero\ 并且他的搜索有所不同.这意味着即使他与我在同一个目录中,也不会找到它,因为他的电脑用户名与我的不同。我们试图找到的文件是一个 DLL 文件。我不知道如何找到它。我尝试使用 fstream 来提供帮助,但后来在代码中,这被称为 WriteProcessMemory(hProc, loc, dllPath, strlen(dllPath) + 1, 0); strlen 出现错误,因为它无法将其转换为 LPCVOID。我目前正在编写这样的字符串: const char* dllPath = "C:\\Users\\Zero\\Documents\\GitHub\\ExtensionProject\\32-Bit\\Debug\\Extension.dll"; 所以我想弄清楚如何跳过整个 C:\Users\ 事情,我想知道,有没有办法从它当前所在的文件夹中读取?因为找到dll的dll和.exe编译在同一个文件夹中。如果您需要我提供更多信息,请告诉我!我很乐意提供更多。另外,我对 C++ 还很陌生,我知道 C++ 并不容易,但最简单的方法将不胜感激,但与此同时,我会尽我所能。

【问题讨论】:

    标签: c++ file io


    【解决方案1】:

    如果您的库在启动时被加载到可执行文件中,您可以从库加载器(GetModuleInfo 或类似的东西)获取它的位置。

    【讨论】:

    • 我不相信我会这样做。让我更具体一点:我有一个名为 Extension.dll 的 dll,位于 C:\Users\Zero\Desktop\ExtensionProject。 ExtensionProject 是一个文件夹。这个文件夹里面有 Extension.dll 和 ExtensionLoader.dll。所以 Loader 和 Extension 都在同一个路径中。当我运行 exe(加载程序)时,它会尝试找到 DLL 以将其推送到某个进程中。但是,如果我不对 dllPath 进行硬编码,我不知道如何使它工作。此外,我的朋友将无法使用它,因为他的 windows 用户名与我的不同。
    • @Zero03 如果加载器和目标 DLL 在同一个文件夹中,那么加载器可以通过GetModuleFileName() 检索自己的路径,然后用目标 DLL 名称替换尾部文件名部分。跨度>
    猜你喜欢
    • 2016-09-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-12
    • 1970-01-01
    • 2013-11-17
    • 2017-04-24
    • 2021-08-06
    相关资源
    最近更新 更多