mcc功能不能返回值,为什么?

时间:2014-04-22 03:03:39

标签: matlab exe mcc

我使用matlab mcc创建一个独立的应用程序exe文件,然后我使用php来调用exe文件。但是我无法获得函数返回值,它总是空的!这是我在m文件中的测试示例

function result=mysum(in)
if nargin<1
    in=[1,2,3];
else
    in=str2num(in); 
end
result=sum(in);
end

然后我使用命令mcc -m mysum.m创建exe文件(我已经配置了matlab编译器)。

这是php文件

    <html>
    <head>
    <title>test</title>
    </head>
    <body>
    <?php  
    exec('F:\myevm\apache\htdocs\shs.exe [2,2,3,3,3] [4,4,4,4,4] 356 1567 1678',$ars);
    echo '<br>';
    echo $ars[0];

    ?>

    </body>
   </script>
   </html> 

然而,$ars[0]总是空的!! 我试图通过自己或通过互联网找到答案,但失败了。给我一个帮助,谢谢。

1 个答案:

答案 0 :(得分:0)

注意两件事:

  1. 您已将功能设置为接受单个输入参数。
  2. 从Windows命令行运行应用程序时,参数将作为字符串传递。
  3. 因此,如果您键入mysum 1(在未编译程序的MATLAB中,我猜也是如果您从编译程序的Windows命令行执行此操作,尽管我还没有对此进行测试)它会起作用,给出答案1,如果你输入mysum [1,2]它会起作用,给出答案3。请注意,mysum [1,2]mysum([1,2]) 不同,因为它传递的是字符串 '[1,2]',而不是双倍数组{{} 1}}。

    但是如果你输入[1,2]它会失败,因为你现在传递了两个字符串输入参数,你的函数被设置为只接受一个。

    重写你的函数,使它接受可变数量的输入参数(看看mysum 1 2来实现这一点),依次将varargin应用于每个输入(将str2num 1}} varargin{1}如果您已使用varargin{n}),然后将它们单独汇总。