2015-10-05 34 views
2

我想用clang编译一个库。图书馆打电话给'取消链接',这是不是由铛定义:叮当是否提供取消链接的实现?

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

我的问题是,什么是clang等效的解除链接?正如我所看到的,前进的道路将是#define在某个地方与等同的例程取消链接。

回答

7

没有“Clang等同物”。 GCC和Clang都没有负责定义unlink,虽然他们确实可能分发POSIX头文件(我不记得POSIX头文件来自哪里)。

不幸的是,这似乎是你正在使用的库的错误; OpenExif开发人员未能包含正确的标题。不同的C++实现可能会在内部为各自的目的使用不同的头文件,这显然已经掩盖了以前工具链中的这个错误。

你能砍你的副本和/或提交补丁添加:

#include <unistd.h> 
+1

我会解决这个问题,当我得到机会,但对于完全相同的问题(特别是与OpenExif)时,#人include for for unistd.h是#ifdef'd for Linux only。解决方法是在条件中包含__APPLE__。 –