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:myevmapachehtdocsshs.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. 您已将函数设置为接受单个输入参数
  2. 从Windows命令行运行应用程序时,参数将作为字符串传入

因此,如果你在MATLAB中对未编译的程序键入mysum 1(我想如果你在编译的程序上从Windows命令行中这样做,尽管我还没有测试过),它会起作用,给出答案1,如果你键入mysum [1,2],它会作用,给出结果3。请注意,mysum [1,2]mysum([1,2])不同,因为它被传递给字符串'[1,2]',而不是双[1,2]的数组。

但是,如果您键入mysum 1 2,它将失败,因为您现在正在传递两个字符串输入参数,并且您的函数设置为只接受一个。

重写函数,使其接受可变数量的输入参数(查看varargin以实现这一点),依次将str2num应用于每个输入(如果使用了varargin,则为varargin{1}varargin{n}),然后分别对它们求和。

相关内容

  • 没有找到相关文章

最新更新