2014-09-23 3 views
0

"Matlab 코더"로 MATLAB 작성 함수를 C로 변환합니다. 변환 된 파일을 가져온 후에는 변환 된 함수의 첫 번째 입력 인수가 항상 const emlrtStack *sp이됩니다. 이제 VC++ 2013에서 테스트하려고 할 때 IntelliSense는 위에서 언급 한 오류를 제공합니다.IntelliSense 오류 식별자 "emlrtStack"이 정의되지 않았습니다.

수동으로이 식별자를 emlrt.h 파일에 위치 시키려고했지만 그곳에 아무 것도 없습니다. I는 두 개의 입력 인자 [같은 C = MUL (a, b)] 여전히 변환 기능 이외에, 함수 내부 이러한 추가적인 인수를 가지고 을 가진 간단한 곱셈 함수 변환 시도한b. (이 인수는 기능과 관련이 없음을 의미).

누군가 해결책이 있거나 이와 같은 문제가 발생하면 공유하거나 도움을 청하십시오.

더욱이 누군가 이러한 변환 된 기능을 테스트하는 방법을 알고 있다면 추가 도움이 될 것입니다.

답변

1

독립 실행 형 타겟이 아닌 MEX 함수에 대해 생성 된 코드가있을 수 있습니다. MEX 함수는 일반 MATLAB 함수처럼 호출 할 수있는 C, C++ 또는 Fortran으로 작성된 바이너리입니다. MEX 함수를 생성하는 코드를 생성하면 두 가지 작업을 수행 할 수 있습니다. 먼저 다른 함수처럼 MATLAB에서 MEX 함수를 호출 할 수 있기 때문에 MATLAB에서 생성 된 코드를 테스트 할 수 있습니다. 코드 생성을 수행 한 후 mul_mex.mex*이라는 파일을 찾아 전화를 시도하십시오 : mul_mex(1,2). MEX 함수를 생성하는 다른 용도는 생성 된 MATLAB 코드보다 더 빠를 수 있다는 것입니다. MEX 함수는 MATLAB의 컨텍스트에서만 사용됩니다.

런타임 오류보고를 돕기 위해 MEX 생성 코드에 나타난 매개 변수 emlrtStack*이 나타납니다. MATLAB 외부에서 실행되도록 설계된 독립 실행 형 코드에는 존재하지 않습니다.

Visual Studio에서 또는 MATLAB 외부에서 생성 된 코드를 사용하려면 독립 실행 형 타겟 중 하나 인 LIB, DLL 또는 EXE를 선택해야합니다. This page은 출력 유형을 변경하는 방법을 보여줍니다. 명령 줄을 사용하는 경우 요약하면, 당신은 말할 수 :

cfg = coder.config('lib'); %or 'dll' or 'exe' 
codegen mul -config cfg -args {1,2} 

를 프로젝트 인터페이스를 사용하는 경우, 당신은 "출력 형식"드롭 다운 메뉴에서 정적 라이브러리 또는 공유 라이브러리를 Build 탭을 클릭하고 선택합니다.

Visual Studio에서 생성 된 DLL을 사용하는 방법을 보여주는 this example을 읽는 것이 좋습니다.

관련 문제