我使用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]
总是空的!!我试着自己或通过互联网找到答案,但没有成功。帮我一个忙,谢谢。
注意两件事:
- 您已将函数设置为接受单个输入参数
- 从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}
),然后分别对它们求和。