为动态链接提供后备符号

时间:2017-03-27 11:08:42

标签: ios linux gcc ld dynamic-linking

当动态链接库时,有一种方法可以指定一个回退符号,以防在加载时丢失一个符号。

例如编译MEX文件而不是mxCreateNumericArray我想调用mxCreateUninitNumericArray(具有相同的签名)。但是后者不适用于较旧的MATLAB版本。 mxArrayToStringmxArrayToUTF8String也是如此。

对于MSVC,我已经能够使用/ DELAYLOAD并挂钩__pfnDliFailureHook2上的dliFailGetProc来提供简单的映射。但是我可以在基于Unix的系统上做些什么呢?

如何以类似方式挂钩libld

1 个答案:

答案 0 :(得分:2)

我无法挂钩动态链接器,但提供弱符号帮助我这样做:

extern "C"
char * __attribute__ ((weak)) mxArrayToUTF8String( mxArray const * array )
{
  return mxArrayToString( array ) ;
}