2014-09-23 5 views
1

몇 가지 이유 때문에 Visual Studio 환경에서 MEX 파일을 컴파일해야합니다. 많은 튜토리얼이 있고 MEX 파일이 잘 작동합니다. 그러나 몇 가지 MEX 옵션이 있습니다. -largeArrayDimsmex 옵션으로 지정합니다.이 옵션은 VS 환경에서 켜는 위치를 모릅니다. 누구든지 도움을 제공 할 수 있습니까?Visual Studio로 컴파일 할 때 MEX 옵션

답변

2

-largeArrayDims 옵션은 MX_COMPAT_32을 정의하지 않음을 나타내는 MATLAB의 mex 명령으로의 전환입니다. Visual Studio에서는 기본적으로 정의되어 있지 않으므로 아무 것도하지 않아도됩니다. 반대 동작 (-compatibleArrayDims)을 원할 경우 전 처리기 섹션에 MX_COMPAT_32을 정의하십시오. tmwtypes.h에서 : 일반적으로

#ifdef MX_COMPAT_32 
typedef int mwSize; 
typedef int mwIndex; 
typedef int mwSignedIndex; 
#else 
typedef size_t mwSize;   /* unsigned pointer-width integer */ 
typedef size_t mwIndex;  /* unsigned pointer-width integer */ 
typedef ptrdiff_t mwSignedIndex; /* a signed pointer-width integer */ 
#endif 

tmwtypes.h, 모든 필요한 MEX 파일을 구축하기위한 설정 (라이브러리 의존성, 헤더, MEX를 설정하는 속성 시트를 사용하는 것이 편리하다 - 파일 확장자 등). 32 비트 또는 64 비트 MATLAB에 대해 자동으로 작동하는 단일 속성 시트는 at GitHub입니다.

바로 같은 Debug | x64로 구성을 클릭하고 "속성 시트를 기존 추가"(속성 관리자에서 MEX 프로젝트의 각 빌드 구성에 속성 시트를 추가 this post for detailed instructions를 참조

몇 가지 추가 메모를.. :

  1. 나는
  2. 속성 시트가 ​​매니페스트 파일을 만듭니다. 하나의 수출 기능으로,이 훨씬 간단합니다. .DEF 파일 대신 /EXPORT:mexFunction를 사용하는 것을 선호하지만, 정말 필요가 없습니다.
  3. libut.lib가 포함되어 있습니다. libut.lib는 MEX 파일 내에서 중단 (CTRL-C)을 감지하는 몇 가지 훌륭한 기능을 제공합니다. (이 여기에 방법이 주제를 벗어 있지만) 관련 선언 :
// prototype the break handling functions in libut (C library) 
extern "C" bool utIsInterruptPending(); 
extern "C" void utSetInterruptPending(bool); 
+0

감사이 많은 도움이 될 것입니다. 그래서 과정은 XML 파일을 만들어 구성에 통합하는 것입니다. mex 명령이 CL 컴파일러 (또는 링커)를 호출 할 때 동일한 프로세스를 실행합니까? – Fontaine007

+0

@JasonYuan 파일의 내용은 XML입니다. 그러나 '.props 확장자'로 저장해야합니다. 'mex' 명령은 본질적으로 같은 방식으로 빌드 (컴파일과 링크)를 설정합니다. '-v' 스위치를'mex' 명령으로 실행하면 다른 명령 행을 볼 수 있습니다. 이 속성 시트는 Visual Studio에서 동일한 작업을 수행하도록 설정합니다. – chappjc

관련 문제