在新的matlab版本上运行旧的mex文件

在新的matlab版本上运行旧的mex文件,matlab,mex,Matlab,Mex,我正在尝试在新版本(R2009a)上运行一个最初在Matlab6.5上测试的程序 该程序使用了一些mex文件,我在尝试运行它时遇到以下错误: ???无效的MEX文件“/normalizedCut/common_files/sparsifyc.mexglx”: normalizedCut/common_files/sparsifyc.mexglx:symbol mxGetIr,版本 libmx.INTERNAL未在带有链接时间参考的libmx.so文件中定义 (我试图翻译的代码是由Shi&Mali

我正在尝试在新版本(R2009a)上运行一个最初在Matlab6.5上测试的程序 该程序使用了一些mex文件,我在尝试运行它时遇到以下错误:

???无效的MEX文件“/normalizedCut/common_files/sparsifyc.mexglx”: normalizedCut/common_files/sparsifyc.mexglx:symbol mxGetIr,版本 libmx.INTERNAL未在带有链接时间参考的libmx.so文件中定义

(我试图翻译的代码是由Shi&Malic标准化的,可以在这里找到: )

如果我尝试在同一个系统上运行代码,但Matlab2007a运行正常

2009年a的向后兼容性是否有问题? 系统中是否有我可以更改以帮助其工作的标志

当我在谷歌上搜索时,我看到了一些对LD_LIBRARY_PATH env变量的引用,但我找不到到底应该添加什么

谢谢,
Yair

使用不同版本的Matlab运行mex函数时出现问题是很常见的。您得到的错误看起来像是由于Matlab中的API更改引起的(尽管这让我有点吃惊)。我遇到了最大的麻烦,因为gcc中的更改导致了二进制不兼容。我建议联系Jiambo,询问他是否可以构建新版本或发布源代码


最糟糕的情况是,您可以尝试重新实现这些mex函数。规范化切割算法在Matlab中非常简单(请参阅)。从mex函数的名称来看,它们看起来像是在复制现有的matlab功能(矩阵乘法、矩阵稀疏化)。如果您将其作为常规m代码函数实现,那么由于Matlab中添加了多核支持,它们的速度可能会更快。

这些mex函数的源代码似乎可以在本页的“使用规范化剪切的图像分割”源代码中找到:(在unpacket.zip中的特定_NcutImage_files子目录中)