MSVC поместит команду, используемую для запуска исполняемого файла, в argv[0]
- это не имеет никакого отношения к текущему рабочему каталогу.
Например, если команда, использованная для запуска foo.exe
, имеет вид:
foo
, и найденный при поиске пути исполняемый файл, который я нашел, argv[0]
будет foo
c:\foos-dir\foo
, (путь не будет найден) argv[0]
будет c:\foos-dir\foo
foo.exe
, argv [0] будет foo.exe
и т. д.
Вероятно, вы должны получить текущий рабочий каталогиспользование Win32 GetCurrentDirectory()
API или _getcwd()
функция времени выполнения .
Вот краткий пример использования GetCurrentDirectory()
:
TCHAR buffer[128];
DWORD const buffer_chars = sizeof(buffer)/sizeof(buffer[0]);
DWORD result = GetCurrentDirectory( buffer_chars, buffer);
if ((result == 0) || (result >= buffer_chars)) {
puts("problem getting the working directory");
exit(1);
}
printf( "Current working directory: %s\n", buffer);