Я пытался упаковать некоторые ресурсы в архив с пользовательским расширением, пытаясь следовать учебнику по Physfs (очень расплывчатому), когда столкнулся с проблемой инициализации PHYSFS. Требуется параметр argv [0], однако он выдает ошибку, что argv не был объявлен. Я также пытался передать argv в качестве параметра в основную функцию, но это тоже не сработало. Вот небольшой кусочек кода, который доставляет мне неприятности:
#include "physfs.h"
int FileManager()
{
PHYSFS_init(argv[0]) //error
...
}
Смотря на этот урок, кажется, что первый и единственный параметр PHYSFS_init
должен быть путь к исполняемому файлу. Он также отмечает, что обычно это NULL, поэтому вы можете передать NULL. Я бы согласился с тем, что учебник отсутствует, поскольку я прочитал этот абзац, поскольку он фактически не объясняет, для чего используется параметр. я предполагать он использует параметр для расчета того, из какого корневого каталога следует работать, исходя из пути исполняемого файла.
argv не является глобальной переменной, поэтому ее не видно в FileManager (). argv обычно является параметром для main (). Таким образом, чтобы ваша функция FileManager могла видеть ее, вам нужно определить ее как параметр в определениях функций main () и FileManager (), а затем передать argv при вызове FileManager () (предположительно из main).
Если вы не вызываете FileManager () из main, скажем, вы проходите через некоторую промежуточную функцию, просто повторите процесс — определите argv в качестве параметра для промежуточной функции и убедитесь, что он передает argv в своем вызове FileManager () (расширьте это по мере необходимости для вашего стека вызовов).