2015-10-05 3 views
2

Я пытаюсь скомпилировать библиотеку, используя clang. Библиотека делает звонки на «тривиальном зацепление», который не определен звоном:Предоставляет ли clang реализацию unlink?

libmv/src/third_party/OpenExif/src/ExifImageFileWrite.cpp:162:17: error: use of undeclared identifier 'unlink'; did you mean 'inline'? 
      unlink(mTmpImageFile.c_str()) ; 

Мой вопрос, что является эквивалентом лязга тривиального зацепления? Как я вижу, путь вперед был бы #define unlink где-то с эквивалентной подпрограммой.

ответ

7

Нет «эквивалента Клана». Ни GCC, ни Clang никогда не отвечали за определение unlink, хотя они, вероятно, распространяют заголовки POSIX, которые делают (я не помню, в частности, откуда появляются заголовки POSIX).

К сожалению, это, кажется, ошибка в библиотеке, которую вы используете; разработчикам OpenExif не удалось включить правильные заголовки. Различные реализации на C++ могут содержать #include различные заголовки для своих целей, которые, очевидно, маскировали эту ошибку на вашей предыдущей инструментальной цепочке.

Вы можете взломать вашу копию и/или представить патч, чтобы добавить:

#include <unistd.h> 
+1

я исправлю это, когда я получаю шанс, но для тех, кто с точно такой же проблемой (в частности, с OpenExif), в # include для unistd.h - это # ​​ifdef'd только для Linux. Исправление состоит в том, чтобы включить условие __APPLE__ в условие. –

Смежные вопросы