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