2017-03-27 114 views
2

動態鏈接庫時,有一種方法可以指定後備符號,以防在加載時丟失一個符號。爲動態鏈接提供後備符號

例如編譯一個MEX文件而不是mxCreateNumericArray我想調用mxCreateUninitNumericArray(具有相同的簽名)。但後者不適用於較老的MATLAB版本。與mxArrayToStringmxArrayToUTF8String相同。

對於MSVC,我已經能夠使用/ DELAYLOAD並掛接到__pfnDliFailureHook2dliFailGetProc上以提供簡單的映射。但是我能在基於Unix的系統上做什麼?

如何以類似的方式掛鉤到libld

+0

也許[如何使GCC弱鏈接的工作?](HTTP:// stackoverflow.com/questions/274753/how-to-make-weak-linking-work-with-gcc)可以幫助你 – Trilarion

回答

2

我已經無法掛接到動態鏈接程序,但提供的弱符號幫了我這樣的:

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