使用共享库的MATLAB mex函数会产生冲突

时间:2016-03-20 04:36:50

标签: c matlab

我正在构建一个与共享库(比如A.so)链接的C mex文件(用于MATLAB),而A.so依赖于B.so提供的功能。但是,MATLAB也单独使用B.so,但附带自己的旧版本。当mex函数在MATLAB中运行时,它调用A.so中的函数(成功),但是当该函数调用B.so中的低级函数时,它错误地切换到MATLAB提供的旧的B.so,以及崩溃或兼容性错误随之而来。

我相信如果我使用较早版本的B.so构建A.so,那么这个问题可能会消失。但是,坚持使用我正在构建的mex函数的所有用户都必须这样做是不切实际的。大多数用户将通过包管理器安装A.so,因此他们的A.so依赖于比MATLAB更新的B.so.

所以我的问题是这样的:是否有可能(通过链接器标志)强制调用A.so来查看B.so中所需的子函数?或者MATLAB是否正在控制,除了构建与旧库相关联的A.so版本之外,我无法覆盖这种不良行为?

我希望这个问题是由于我对MATLAB如何解析它所知道的共享库以及外部mex函数可能需要的非常不完整的知识。我需要一个跨平台的解决方案(Win,OS X,Linux)。

0 个答案:

没有答案