C++ clang是否提供了一个取消链接的实现?
我正在尝试使用clang编译一个库。库调用“unlink”,这不是由clang定义的:C++ clang是否提供了一个取消链接的实现?,c++,clang,clang++,unlink,C++,Clang,Clang++,Unlink,我正在尝试使用clang编译一个库。库调用“unlink”,这不是由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() ) ; 我的问题是,什么是解除链接的叮当声?在我看来,前
libmv/src/third_party/OpenExif/src/ExifImageFileWrite.cpp:162:17: error: use of undeclared identifier 'unlink'; did you mean 'inline'?
unlink( mTmpImageFile.c_str() ) ;
我的问题是,什么是解除链接的叮当声?在我看来,前进的道路将是#用等效例程定义某个地方的取消链接。没有“叮当等效”。GCC和Clang都不负责定义,尽管它们可能会分发POSIX头文件,而POSIX头文件确实如此(我不记得POSIX头文件的具体来源)
不幸的是,这似乎是您正在使用的库的一个bug;OpenExif开发人员未能包含正确的头。不同的C++实现可能内部的代码<代码>包含< /代码>各种标题,以供他们自己的目的,这显然屏蔽了你以前的工具链上的这个bug。
您可以破解副本和/或提交修补程序以添加:
#include <unistd.h>
#包括
我会在有机会的时候解决这个问题,但对于任何有完全相同问题的人(特别是OpenExif),include for unistd.h仅适用于Linux。修复方法是将APPLE包括在内。我认为更合适的方法可能是将#define HAVE_UNISTD_H 1
添加到ExifComp.H?通常,可以为特定平台配置第三方库,此配置步骤的一部分是将#define HAVE_UNISTD_H
定义为0
或1
。