2011-01-21 3 views
2

엄청난 수의 MEX 파일로 구성된 Matlab 라이브러리를 유지 관리합니다. 지금까지는 Matlab 스크립트로 라이브러리를 만들었지 만 이제는 전체 빌드 프로세스에서 Microsoft Visual Studio IDE를 사용하기 시작했습니다. 나는 다음과 같은 지침 꽤 멀리 입수했습니다 : 단일 Visual Studio 프로젝트에서 여러 .dll 파일 (.mexw32 파일)을 만드는 방법은 무엇입니까?

그러나이 지침은 하나의 MEX 파일에서만 작동하는 것. 내가 가진 문제는 단일 Visual Studio 프로젝트에서 여러 .mexw32 대상 (또는 .dll 대상)을 빌드하는 방법입니다. MEX 파일을위한 (동일한 솔루션 내에서) 별도의 프로젝트를 만드는 것은 제가 고려하기가 쉽지 않은 옵션입니다. 이 파일의 수는 수백 개입니다.

Matlab에 익숙하지 않은 분들을 위해 MEX 파일은 C++로 작성된 확장 파일이며 본질적으로 .mexw32라는 특수 확장명을 가진 .dll 파일로 컴파일됩니다. 이들 각각은 하나의 진입 점 void mexFunction(...)을 내 보냅니다. AFAIK 당신이 내가 선호하는 하나의 .dll에 이들을 연결할 수 없습니다.

+0

만원의 MEX 파일의를? 왜 C++로 전체 프로그램을 작성하지 않는가? –

답변

0

MEX 파일 당 프로젝트를 만들고이를 하나의 솔루션에 넣는 것이 유일한 방법이라고 생각합니다. 프로젝트 파일은 정적 라이브러리, 동적 라이브러리 또는 실행 파일 등 하나의 대상을 나타내도록 설계되었습니다. 솔루션은 프로젝트 컬렉션과 서로 의존하는 방식을 나타 내기 위해 설계되었습니다. 그것이 바로 당신이 필요로하는 것입니다.

아마도 많은 수의 프로젝트를 만들고 단일 솔루션에 추가하기 위해 일부 스크립트로 모든 것을 자동화 할 가능성을 조사해야 할 것입니다.

1

이것을 MATLAB 스크립트로 작성하는 것이 더 쉽습니다. 예를 들어, 다음과 같은 MATLAB 명령 :

mex -f msvc90opts.bat MyMexFile.c 

이 작업을 수행합니다. MEX 파일 당 하나의 라인이 분명히 있습니다. msvc90opts.bat 파일은 bin\win32\mexopts 아래의 MATLAB 설치 폴더에 제공된 템플릿을 기반으로합니다.

내 빌드 프로세스에 대한

는 그때까지 함수에 mex 이러한 호출을 포장 한 후 사용하여 명령 줄에서 해당 호출 :

matlab.exe -wait -sd . -nosplash -nojvm -r "BuildMex, exit"