运行其他程序的程序 - 不同的目录& DLL文件

时间:2013-06-15 09:26:59

标签: dll directory

我正在编写一个程序,但我在运行它时遇到了问题。我使用了很多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;   
}

0 个答案:

没有答案