2010-04-08 5 views
0

내 컴퓨터에 mex64 dll이 컴파일되어 있습니다. 나는 dll을 컴파일하기 위해 VS2008 Pro로 Matlab 2009b를 사용했다. dll은 Matlab 설치시 잘 작동합니다. 컴퓨터간에 mex64 파일 공유

는 내가 그에게 보내도록 동료가 DLL을 사용하려는 그는 DLL을 사용하려고 다음과 같은 오류 메시지가 가져옵니다

을 ??? 잘못된 MEX- 파일 'filename.mexw64': 지정한 모듈을 찾을 수 없습니다.

내 현재 가정은 그가 이전 Matlab 버전을 사용하고 있거나 가지고있는 DLL이 없기 때문입니다. 의존성 검사기를 실행하고 나열된 DLL이 모두 있는지 확인하도록 요청했습니다.

아직 매트랩 (Matlab) 버전을 확인하기를 기다리고 있습니다.

다른 원인으로 인해 Matlab 버전이 달라질 수 있습니까?


다른 사람이 matlab에 R2009a이 있습니다 (I이는 R2009b 아닌 거대한 버전은 diff있을 때 나는 R2009a을 의미). 내 컴퓨터에서 그것을 컴파일하여 그에게 건네 주면 mex가 작동하지 않아야합니까?

이 경우에만 종속 DLL이 누락되어 있습니까?

답변

0

Dll은 MySql 액세스를위한 래퍼입니다. 우리는 Matlab의 ODBC와 MySql Connector를 사용하여 끝내게되었습니다.

0

일반적으로 MEX 파일은 서로 다른 버전의 Matlab에서 작동해야합니다. 특히 앞으로 호환 될 수 있어야합니다. 네가 옳아; dll 문제 같은데.

Visual Studio로 빌드 한 경우 Visual C++ 런타임에 연결할 수 있습니다. 이것은 기본적으로 Windows에 설치되지 않은 라이브러리 집합입니다. "재배포 가능 파일"은 here을 다운로드 할 수 있습니다. 문제를 해결할 수있는 동료 설치가 필요합니다. 그래도 작동하지 않으면 Dependency Walker을 사용하여 다른 만족스러운 DLL 종속성을 확인할 수 있습니다.

일반적으로 Matlab과 함께 배포되는 Lcc 컴파일러를 사용하기 위해 Matlab의 "mex-setup"을 구성하는 것이 좋지만 64 비트 Windows AFAIK에서는 지원되지 않습니다.

또한 그가 Windows의 64 비트 버전을 갖고 있습니까?

+0

그래, 그는 그가 64 비트 버전을 가지고 있다고 확신한다. 우리는 지금 의존성 워커를 사용하여 DLL을 처리하려고합니다. 감사! – Shaihi

0

또 다른 가능한 원인은 디버그 모드로 컴파일 한 것일 수 있습니다. Visual C++ 재배포 가능 파일은 릴리스 모드 만 지원합니다.

+0

컴파일 할 때 디버그 플래그를 사용하지 않았으므로 릴리스 모드에 있다고 확신합니다. – Shaihi

1

문제가 이상하지만 문제가 있음을 확인할 수 있습니다.

정확하게 설치되고 경로에있는 matlab에 미리 빌드 된 라이브러리를 사용하면 가끔 같은 오류가 발생합니다. 명령 줄에 함수 이름을 입력하면 함수가 표시되고 자동 완성됩니다. 그러나이 함수는 .mexw64 라이브러리 파일이있는 디렉토리로 'cd'할 때까지 초기화되지 않습니다.

>> AndorInitialize('') 
Invalid MEX-file 'C:\Program 
Files\MATLAB\R2011b\toolbox\andor\AndorInitialize.mexw64': The 
specified module could not be found. 

>> path 

     MATLABPATH 

    C:\Program Files\MATLAB\R2011b\toolbox\andor 
    C:\Program Files\MATLAB\R2011b\toolbox\andor\camera files 
    C:\Program Files\MATLAB\R2011b\toolbox\andor\m files 
    ... etc 

이것은 누락 된 종속성으로 인한 것입니다. 누락되어서는 안됩니다. 이 문제를 해결하려면 누락 된 부분을 확인하려면 dependency walker (무료, 경량)을 사용하십시오. mathworks에서이를 설명합니다.내 경우

http://www.mathworks.com/support/solutions/en/data/1-2RQL4L/

두 DLL의 그들이 내 시스템과 경로에 있었다하더라도, 제대로 표시되지 않았다. DLL을 windows/system32 폴더에 복사 했으므로 라이브러리 함수가 올바르게 작동합니다. 특히 이상한 점은 며칠 전 (DLL 이전에) 동일한 라이브러리가 내 컴퓨터에서 작동한다는 것입니다.

+0

감사! 다르게 해결되었지만,이 답변이 다른 사람들에게 도움이되기를 바랍니다. – Shaihi