使用eval,Undefined函数或变量'largeArrayDims'时出错。

时间:2013-07-25 10:43:35

标签: matlab mex

我想在我的Matlab2012a上安装enceval工具包:

enceval toolkit file to install on Matlab

我已经安装了支持编译器visual studio 10和SDK 7.1。 他们在file.m中编写了这段代码来安装:

archstr = computer('arch');
if(strcmp(archstr,'win64'))
  lapacklib = fullfile(matlabroot, ...
  'extern', 'lib', 'win64', 'microsoft', 'libmwlapack.lib');
  blaslib = fullfile(matlabroot, ...
  'extern', 'lib', 'win64', 'microsoft', 'libmwblas.lib');
  command =  'mex (''LLCEncodeHelper.cpp'', lapacklib, blaslib, largeArrayDims)';
elseif(strcmp(archstr,'win32'))
  lapacklib = fullfile(matlabroot, ...
 'extern', 'lib', 'win32', 'microsoft', 'libmwlapack.lib');
  blaslib = fullfile(matlabroot, ...
  'extern', 'lib', 'win32', 'microsoft', 'libmwblas.lib');
  command =  'mex(''LLCEncodeHelper.cpp'', lapacklib, blaslib)';
elseif strcmp(archstr,'glnx86')
    command = 'mex -O LLCEncodeHelper.cpp -lmwlapack -lmwblas';
elseif strcmp(archstr,'glnxa64')
    command = 'mex -O LLCEncodeHelper.cpp -lmwlapack -lmwblas -largeArrayDims';
else
    error('System architecture could not be identified');
end

mexCmds=cell(0,1);
mexCmds{end+1}=command;

for i=1:length(mexCmds)
  fprintf('Executing %s\n',mexCmds{i});
  eval(mexCmds{i});
end

当我运行此代码时,我得到了这个例外:

*Executing mex ('LLCEncodeHelper.cpp', lapacklib, blaslib, largeArrayDims)

Error using eval

Undefined function or variable 'largeArrayDims'.

Error in featpipem_setup (line 32)

  eval(mexCmds{i});*

我不知道为什么它是matlab版本的问题或者有些东西丢失了?

1 个答案:

答案 0 :(得分:0)

尝试传递字符串'-largeArrayDims'而不是变量largeArrayDims,它在调用mex之前未在任何地方声明,即尝试运行以下内容:

lapacklib = fullfile(matlabroot, ...
  'extern', 'lib', 'win64', 'microsoft', 'libmwlapack.lib');
blaslib = fullfile(matlabroot, ...
  'extern', 'lib', 'win64', 'microsoft', 'libmwblas.lib');
command =  'mex (''LLCEncodeHelper.cpp'', lapacklib, blaslib, ''-largeArrayDims'')';
eval(command)