当动态链接库时,有一种方法可以指定一个回退符号,以防在加载时丢失一个符号。
例如编译MEX文件而不是mxCreateNumericArray
我想调用mxCreateUninitNumericArray
(具有相同的签名)。但是后者不适用于较旧的MATLAB版本。 mxArrayToString
和mxArrayToUTF8String
也是如此。
对于MSVC,我已经能够使用/ DELAYLOAD并挂钩__pfnDliFailureHook2
上的dliFailGetProc
来提供简单的映射。但是我可以在基于Unix的系统上做些什么呢?
如何以类似方式挂钩libld
?
答案 0 :(得分:2)
我无法挂钩动态链接器,但提供弱符号帮助我这样做:
extern "C"
char * __attribute__ ((weak)) mxArrayToUTF8String( mxArray const * array )
{
return mxArrayToString( array ) ;
}