我正在编写一个程序,但我无法以很好的方式运行它。我使用了很多 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;
}