下面的answer给出了一个使用C#的解决方案,我想知道如果只使用c ++(而不是c ++ \ cli)会有什么等价物
System.IO.Directory.SetCurrentDirectory(System.AppDomain.CurrentDomain.BaseDirectory);
有没有什么可以解决这个问题?
根据这个问题,我一直在:Correctly creating and running a win32 service with file I/O
答案 0 :(得分:8)
SetCurrentDirectory
(在Win32中):
http://msdn.microsoft.com/en-us/library/windows/desktop/aa365530%28v=vs.85%29.aspx
current_path
中的 boost::filesystem
:
http://www.boost.org/doc/libs/1_51_0/libs/filesystem/doc/reference.html#current_path
BaseDirectory的等价物可能是GetModuleFileName
(第一个参数的句柄为空),后跟GetFullPathName
从可执行路径获取目录。
答案 1 :(得分:4)
使用SetCurrentDirectory WINAPI。
What is the difference between _chdir and SetCurrentDirectory in windows?
还有一个答案可用也许还需要模块名称(从评论中看似),这是我老店里的一个: -
int main()
{
char path[MAX_PATH]={0};
GetModuleFileName(0,path,MAX_PATH);
}
答案 2 :(得分:4)
在Windows中,完全相当于
System.IO.Directory.SetCurrentDirectory ( System.AppDomain.CurrentDomain.BaseDirectory )`
将是:
// Get full executable path
char buffer[MAX_PATH];
GetModuleFileName(NULL, buffer, MAX_PATH);
// Get executable directory
boost::filesystem::path path(buffer);
path = path.parent_path();
// Set current path to that directory
boost::filesystem::current_path( path );
请注意,没有与平台无关的方法来获取应用程序的目录,因为C ++无法识别标准中的目录概念。 Boost似乎也没有相同的功能。