我使用以下技术在通过自定义协议启动的 Windows 上创建了一个 C++ 应用程序:http: //msdn.microsoft.com/en-us/library/ie/aa767914 (v=vs.85).aspx .
它使用 ifstream 加载配置文件,该文件与可执行文件位于同一文件夹中。因此,如果我使用相对路径 ( ifstream myfile ("config.cfg");
),它就像一个魅力。但是,如果我像这样在 IE 中使用自定义协议调用我的应用程序:myprotocol:\\
当我执行相同的可执行文件时,它无法加载文件。
有人可以向我解释为什么我的程序在通过自定义协议执行时表现不同,以及我应该如何让我的应用程序加载文件而不必使用绝对路径?
int main(int argc, char* argv[])
{
wchar_t buffer[MAX_PATH];
GetModuleFileName( NULL, buffer, MAX_PATH );
std::wcout << buffer;
std::string line;
std::ifstream file ("config.cfg);
if(file.is_open())
{
std::cout << "Succes";
}
else
{
std::cout << "Could not load file";
return -1;
}
return 0;
}
GetModuleFileName
在这两种情况下都正确给出了可执行文件的路径。这只是一个小测试。
任何帮助表示赞赏,亚历山大