2016-06-13 4 views
1

VISSIM (트래픽 시뮬레이터)에서 매개 변수를 수정하는 데 사용되는 C++로 작성된 DLL이 있습니다. 이 DLL 내에서 MATLAB을 호출하여 데이터를 보내고 MATLAB 함수를 수행 한 다음 데이터를 DLL에 반환합니다. VISSIM이 필요에 따라 DLL을 호출하기 때문에 IDE 외부에서이 모든 작업이 수행됩니다.DLL에서 MATLAB 호출

나는 (1) VISSIM 매개 변수를 적절하게 수정하는 작업 DLL과 (2) MATLAB 엔진을 여는 작동하는 .cpp 프로그램 (이 두 프로그램은 현재 분리되어 있습니다 - 서로 독립적입니다)이 있습니다.

기존 DLL에서 MATLAB 엔진을 호출 할 수 있도록이 두 프로그램을 어떻게 조합 할 수 있습니까? .cpp MATLAB 엔진 프로그램을 DLL에 간단하게 복사하여 붙여 넣지 않아도 작동하지 않았습니다. (.cpp MATLAB 엔진 프로그램 속성에서 수행 한 것처럼 필요한 MATLAB 라이브러리/디렉토리/경로를 포함하도록 DLL 프로젝트 속성도 수정했습니다.)

참고 : .cpp MATLAB 엔진 프로그램은 'stdafx.h'로 성공적으로 빌드되지만 DLL에 복사 된 다음 빌드되면 치명적인 오류 C1083이 발생합니다. 포함 파일을 열 수 없습니다 : 'stdafx.h' 이슈?

답변

0

시뮬레이션이 시작되면 사용자 지정 DLL을로드하는 VISSIM을 제어하기 위해 일반적으로 MATLAB 또는 다른 COM 인터페이스 언어를 실행하는 것과 같은 흥미로운 딜레마입니다. VISSIM이 시뮬레이션으로 시작된 후에 DLL이 MATLAB을 실행하기를 원한다.

저는 최선의 방법은 첫 번째 방법 인 표준 통신 방법을 사용하는 것이지만 분산 된 데이터 교환 방법이라고 생각합니다. 한 가지 해결책은 시뮬레이션이 시작될 때 DLL을로드 할 VISSIM을 MATLAB이 시작하도록하는 것일 수 있습니다. DLL은 데이터베이스, XML 파일, 텍스트 파일 또는 다른 데이터 컨테이너로 데이터를 보낼 수 있습니다. MATLAB은 업데이트를 위해 데이터 컨테이너를 모니터링하고 VISSIM으로 보내야합니다. 이것은 조금 느리지 만 작동해야합니다.

다른 아이디어가 있지만 약간의 연구가 필요합니다. 의논하고 싶다면 저에게 연락하십시오. 저는 MATLAB, R, C++ 및 C#을 사용하여 지난 7 개월 동안 VISSIM 용 솔루션을 적극적으로 개발해 왔습니다.

+0

아이디어를 공유해 주셔서 감사합니다. 필자는 초보자 프로그래머이므로 인터페이스 아키텍처를 이해하는 데 어려움을 겪고 있습니다. 더 자세한 이야기가 도움이 될 것입니다. 내 프로필에서 내 이메일을 찾을 수 없으므로 내 이메일을 확인하십시오. –