Как мне получить argv [0]?

В C ++ я получал путь к приложению без имени приложения в конце, говоря:

 std::string dir = dirname(argv[0]);

и это работало без проблем, но когда я планировал использовать какао, он сказал:

ошибка: ‘argv’ не был объявлен в этой области, и теперь я потерян, я попробовал:

NSArray *args = [[NSProcessInfo processInfo] arguments];

std::string dir = dirname(args);

но без удачи, пожалуйста, помогите мне, ребята!

PS: я изменил файлы с .m на .mm уже на тот случай, если вы хотите знать

1

Решение

Вот как вы получаете путь к приложению:

[[NSBundle mainBundle] bundlePath];
3

Другие решения

Вместо того чтобы сказать

std::string dir = dirname(args);

попробуйте следующее:

NSArray *args = [[NSProcessInfo processInfo] arguments];
NSString* arg0 = args[0];
std::string dir = dirname([arg0 fileSystemRepresentation]);

надеюсь, это поможет

2