2011-04-06 3 views
1

이것은 Subhash입니다. fortran-matlab mex 파일을 연결하는 데 문제가 있습니다. MATLAB R2010a를 실행 중입니다. 나는 MATLAB에서 mex fortran 서브 루틴을 시도하고있다. MSYS, MinGW 및 gfortran을 설치했습니다. 또한 c : \ documents \ MATLAB 폴더에서 gnumex를 다운로드하고 추출했습니다. 설치 설정을 실행하기 위해 gnumex를 입력했습니다. ----- \와 Mingw B) Cygwin에서의 FORTRAN-MATLAB MEX 파일 오류

  • 루트 디렉토리 : 이 시점에서, 나는 창 팝업을보고 난 다음 입력 :

    1. 는 MinGW의 루트 디렉토리 ---> C 향해 지적 > 공백으로 남김 c)
    2. g95.exe 경로 ------> c : \ mingw \ bin
    3. gfortran.exe 경로 ------> c : \ program files \ gfortran \ bin e)
    4. gnumex 유틸리티 경로 ------> c : \ users ..... \ matlab \ gnumex
    5. 환경 연결 유형 ------> 최소값 GW는
    6. 은 -----> 컴파일 -------> 포트란 77
    7. 추가 스텁 ------> 어떤
    8. 최적화를위한

    9. 언어를 MEX MEX DLL 또는 엔진을 생성 \ 사용자 ... \ 로밍 \ 매스 웍스 \ MATLAB \ R2010a \ gnumex

    10. 멕스 옵션 파일 생성하기 : 라이브러리와 C는 .DEF 파일에 대한 수준 -----> -O3

    11. 경로 : c \ users ... \ Roaming \ MathWorks \ MATLAB \ R2010a \ mexopts.bat

    위의 내용은 gnumex가 설치된 mex의 설치 설정입니다. "

    을 작성하기위한 ... \ R2010a \ 빈 \의 mex.pl : 나는 옵션 파일을 칠 때, 경고 메시지가 "할 수 없습니다 corret mex.pl ..... "열 수 없습니다 C를 밝히는 튀어 ok를 쳤을 때 다시 mexopts.bat를 덮어 썼는지 확인하는 메시지가 나타납니다. 확인을 클릭하면 opt 파일이 생성됩니다.

    이 시점에서 mex 설치를 준비해야합니다. 포트란 mex 예제 xtimesy.f, 등. (mex filename.f 명령 프롬프트에서 사용) 다음 오류가 발생합니다.

    g77 : getValidInputLinkLibraries : 해당 파일 또는 디렉터리가 없습니다 c : \ prog ~ 1 \ MATLAB \ R2010A \ BIN \ MEX.PL : 오류 : 'xtimesy.mexw32'의 링크가 실패했습니다. ---> mex at 222 을 (를) 사용하는 중에 오류가 발생했습니다.

    이 제거를 여러 번 시도했지만 같은 오류가 발생했습니다. 아무도 내가 잘못 가고 있는지 알려주시겠습니까? 이것이 g77을 연결하는 올바른 절차가 아닌가요? 이 점을 밝혀주세요.

    안녕하십니까.

    감사합니다.

  • 답변

    1

    최근에 mex 일부 포트란 루틴을 시도하고 matlab에 의해 포트란 컴파일러에 대한 열악한 지원으로 인해 실패했습니다.나는 f2c를 사용하여 fortran을 C 코드로 변환 한 다음 C에서 자동으로 생성 된 C 코드 함수를 호출하고 matlab과 잘 통합되는 Visual Studio 2008 컴파일러를 사용하여 mexing을 호출하는 C에서 게이트웨이 루틴을 작성합니다 (무료 표현 에디션 버전이면 충분합니다. 디버깅에도 사용할 수 있습니다).

    에서 f2c를 얻을 수 있습니다. 생성 된 C 코드를 소스에서 빌드해야하는 f2c 라이브러리에 링크해야합니다.

    나는이 모든 소리가 매우 복잡하다는 것을 알고 있지만, 내가 찾은 가장 쉬운 해결책이었다.

    +0

    새로운 버전에는 gnumex에 대한 몇 가지 문제가 있다고 생각됩니다 (gnumex 디렉토리의 readme 파일에 설명되어 있음). 당분간 저는 R2008a를 설치하고 fortran과 mex를 사용했습니다. 일단 작동하면 알려 드리겠습니다 .. – Superted