0

我正在编写一个程序,但我无法以很好的方式运行它。我使用了很多 DLL,不幸的是它们必须放在应用程序目录或系统文件夹中。我不想把它放在系统目录中,这就是为什么我需要把它放在与我的 .exe 文件相同的目录中。我仍然不希望用户通过许多 DLL 文件来查找 .exe。这就是为什么我认为我可以使用位于不同位置的不同程序运行 .exe(与我的 .exe 和 DLL 文件所在的文件夹位于同一目录中)。不幸的是,该程序仅从第一个程序的目录加载文件。这是我的代码。如果您能帮助我,我将不胜感激。

#include <windows.h>
#include <iostream>


std::string ExePath()
{
    char buffer[MAX_PATH];
    GetModuleFileName( NULL, buffer, MAX_PATH );
    std::string::size_type pos = std::string( buffer ).find_last_of( "\\/" );
    return std::string( buffer ).substr( 0, pos);
}

int main()
{
    const char * filepath;
    filepath = (ExePath()+"\\bin\\test.exe").c_str();
    STARTUPINFO info={sizeof(info)};
    PROCESS_INFORMATION processInfo;
    if (CreateProcess(filepath, "cmd", NULL, NULL, TRUE, 0, NULL, NULL, &info, &processInfo))
    {
        ::WaitForSingleObject(processInfo.hProcess, INFINITE);
        CloseHandle(processInfo.hProcess);
        CloseHandle(processInfo.hThread);
    }
    return 0;   
}
4

0 回答 0