Matlab编译器(mcc)不包括引用函数

时间:2014-03-15 21:12:15

标签: matlab matlab-compiler

我正在尝试将matlab源文件(.m)编译成一个独立的应用程序(在linux上)。在我的.m文件中,我调用一个函数(特别是来自一个名为MALSAR的库),而这个函数似乎正在使用一些编译库(.mexglx .mexmaci64 .mexw32 .mexw64)。当我编译我的源文件时,我使用" -I"包含了MALSAR包下的所有子目录。选项如下

mcc -mv -I <dir1> -I <dir2> .... myfile.m

编译没有发出警告,但是当我执行独立的可执行文件时,我得到一个 MATLAB:fileHasDisappeared 错误。我使用 mcc版本4.18。

详细错误输出如下。

The file
   '/home/acharuva/Projects/scot/ext/MALSAR/functions/joint_feature_learning/Logistic_L21.m'
   is not in the application's expanded CTF archive at
    '/home/acharuva/.mcrCache8.1/run_l20'.
This is typically caused by calls to ADDPATH in your startup.m or matlabrc.m files. Please see the compiler documentation and use the ISDEPLOYED function to ensure ADDPATH commands are not executed by deployed applications.
Previously accessible file "/home/acharuva/Projects/scot/ext/MALSAR/functions/joint_feature_learning/Logistic_L21.m" is now inaccessible.

Error in run_l21_cross (line 34)

MATLAB:fileHasDisappeared

任何帮助将不胜感激。谢谢。

2 个答案:

答案 0 :(得分:0)

从错误消息中可以明显看出,正如@Divakar指出的那样,这是由代码中的addpath()函数引起的,我无法检查。修复了修复错误的问题。

答案 1 :(得分:0)

在Matlab .m文件中,使用isdeployed标志覆盖ADDPATH。否则,当从编译器构建代码时,它会给出“以前可访问的文件”错误。 修理它:

%isdeployed = false表示从matlab app运行文件,如果true表示从编译器运行

  if(isdeployed==false)

    addpath(...);

    end