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