My C file_exists Функция Использование stat всегда завершается ошибкой с errno = ENOENT

Я использую FlasCC + ​​Swig для вызова своей функции C в приложении Adobe Air.

Функция C:

int file_exists(const char filename[]) {
struct stat stbuf;
if (stat(filename, &stbuf) == -1) {
return (0);
}
return (1);
}

В моей обычной командной строке (конечно, сначала скомпилируйте main.cpp), если я предоставлю «/tmp/test.txt» (файл существует), функция file_exists возвращает 1, что ожидается.

Однако после того, как я использую FlasCC + ​​Swig для компиляции этой функции C file_existsи сгенерируйте библиотеку SWC, и добавьте эту библиотеку в мое приложение Adobe Air и запустите ее, она всегда возвращает 0, что неверно.

Я проверил errno, это значение ENOENT (2):

Компонент пути не называет существующий файл или путь является пустым
строка.

http://pubs.opengroup.org/onlinepubs/7908799/xsh/stat.html

Можете ли вы дать мне идею?

Кстати, в моем приложении Adobe Air:

var file:File = File.applicationDirectory.resolvePath(path);
trace(file.exists); // returns true

Таким образом, Adobe Air имеет доступ к локальной файловой системе.

0

Решение

Оказывается, что код низкого уровня c не сможет увидеть РЕАЛЬНЫЙ локальная файловая система. Нам нужно использовать виртуальную файловую систему Adobe.

CModule.vfs.addDirectory("/MyPath/");
CModule.vfs.addFile("/MyPath/MyFile.txt", data);

После того, как мы настроили вышеупомянутую VFS, наша функция чтения файла C сможет увидеть файл /MyPath/MyFile.txt,

0

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

Других решений пока нет …

По вопросам рекламы [email protected]