2014-04-22 17 views
0

나는 matlab mcc를 사용하여 독립 실행 형 응용 프로그램 exe 파일을 만든 다음 PHP를 사용하여 exe 파일을 호출합니다. 하지만 함수 반환 값을 가져올 수 없습니다, 그것은 항상 비어 있습니다! 여기 m 파일mcc 함수가 값을 반환 할 수없는 이유는 무엇입니까?

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

에서 내 테스트 예는 I (나는 이미 MATLAB 컴파일러를 구성) EXE 파일을 만들려면 명령 mcc -m mysum.m을 사용합니다.

여기 $ars[0]은 항상 비어, 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> 

입니다! 혼자서 또는 인터넷을 통해 답변을 찾으려고했지만 실패했습니다. 고마워. 고마워.

답변

0

참고 두 가지 :

  1. 당신은 당신의 함수는 하나의 입력 인수를 허용하도록 설정해야합니다.
  2. Windows 명령 줄에서 응용 프로그램을 실행하면 인수가 문자열로 전달됩니다.

당신이합니다 (컴파일되지 않은 프로그램에 MATLAB에 하나, 당신은 컴파일 된 프로그램의 Windows 명령 줄에서이 작업을 수행 할 경우, 나는이 테스트를하지 않은 비록 내가, 또한 추측 것) mysum 1를 입력하면 작동합니다 그래서 대답은 1이고, mysum [1,2]을 입력하면 대답이 3이됩니다. 그것은 문자열'[1,2]'하지 복식 [1,2]의 배열을 전달되는대로 mysum [1,2]는, mysum([1,2])에서 다른 유의하십시오.

mysum 1 2을 입력하면 두 개의 문자열 입력 인수를 전달할 수 없으므로 실패하고 함수는 하나만 허용하도록 설정됩니다. 이 입력 인수 (그것을 달성하기 위해 varargin을 살펴)의 가변 수를 받아들이도록

varargin을 사용 한 경우 varargin{n}- varargin{1} 될 것이다 (입력의 각 차례로 str2num을 적용 함수를 다시 작성

), 개별적으로 합계합니다.