为动态链接提供后备符号

Provide fallback symbol for dynamic linking

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

例如编译 MEX 文件而不是 mxCreateNumericArray 我想调用 mxCreateUninitNumericArray(具有相同的签名)。但后者不会出现在较旧的 MATLAB 版本中。 mxArrayToStringmxArrayToUTF8String 相同。

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

如何以类似的方式连接到 libld

我无法连接到动态链接器,但提供弱符号帮助我解决了这个问题:

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