MATLAB으로 작성한 함수를 DLL 파일로 만들고 C# 응용프로그램에서 호출할 수 있습니다.
개발 환경
시스템 정보
- Intel Core i7 CPU
- Windows 10 (64-bit)
- 16GB RAM
소프트웨어 도구
DLL 생성시
- MATLAB Compiler SDK - MATLAB으로 작성한 함수를 DLL 파일로 만듭니다. 이 제품은 유료입니다.
C# 응용프로그램 개발시
- Visual Studio Community 2019 - C# 응용프로그램을 개발할 때 사용하는 통합 개발 환경입니다.
C# 응용프로그램 실행시
- MATLAB Runtime - DLL을 사용할 때 필요로 하는 MATLAB 실행 환경입니다. 이 제품은 응용프로그램과 함께 배포할 수 있으며 무료입니다.
MATLAB에서 작성한 함수
AddNumbers.m
파일에서 작성한 AddNumbers
함수는 두 개의 숫자를 인자 num1
, num2
로 받아서 더하고 그 결과를 반환합니다.
function sum = AddNumbers(num1, num2)
sum = num1 + num2;
MATLAB에서 DLL 파일 만들기
-
MATLAB에서 앱 메뉴를 클릭합니다.
-
앱 항목 중에서 Library Compiler를 실행하여 MATLAB Compiler 화면을 엽니다.
-
Type 목록에서 .NET Assembly를 선택합니다.
-
EXPORTED FUNCTIONS 목록의 + 버튼을 클릭하여 아래 항목을 추가합니다.
AddNumbers.m
-
Library information 영역에서 아래 사항들을 입력합니다.
- Library name: AddNumbersMatlab
- Version: 1.0
- Author Name:
- Email:
- Company:
- Summary: Add two numbers.
- Description:
- Namespace:
- Class Name: AddNumbersClass
-
Additional installer options 영역에서 아래 사항을 입력합니다.
- Default installation folder:
AddNumbersMatlab
- Default installation folder:
-
Files required to run your library 영역에서 + 버튼을 클릭하여 라이브러리를 실행하는데 필요한 파일을 추가할 수 있습니다. 이 예제에서는 직접 추가해 주어야 할 파일이 없으므로 다음 단계로 넘어갑니다.
-
화면 상단에서 아래 항목을 선택하고 Package 버튼을 클릭합니다.
- Runtime downloaded from web:
AddNumbersMatlabInstaller_web (5 MB)
- Runtime downloaded from web:
-
프로젝트 저장 대화상자에서 아래 항목을 지정하고 저장 버튼을 클릭합니다.
- 파일 이름:
AddNumbersMatlab.prj
- 파일 이름:
Visual Studio에서 DLL 파일 사용하기
-
Visual Studio에서 C# 프로젝트를 생성합니다.
- 프로젝트 템플릿: 콘솔 앱 (.NET Framework)
- 프로젝트 이름: AddNumbersByMatlab
- 솔루션 및 프로젝트를 같은 디렉토리에 배치
-
솔루션 탐색기의 프로젝트 항목에서 컨텍스트 메뉴를 띄우고 추가 > 참조… 항목을 클릭합니다.
-
참조 관리자 대화상자에서 하단의 찾아보기… 버튼을 클릭하고 아래 항목을 추가합니다.
AddNumbersMatlab\for_redistribution_files_only\AddNumbersMatlabNative.dll
-
솔루션 탐색기의 프로젝트 항목에서 컨텍스트 메뉴를 띄우고 속성 항목을 클릭합니다.
-
화면 왼쪽의 빌드 항목을 클릭하고 일반 영역에서 아래와 같이 변경합니다.
- 플랫폼 대상: Any CPU → x64
-
Program.cs
파일을 아래와 같이 작성하고 빌드합니다.using AddNumbersMatlabNative; using System; namespace AddNumbersByMatlab { class Program { static void Main(string[] args) { var matlabOjb = new AddNumbersClass(); var num1 = 10.1; var num2 = 11.2; var result = matlabOjb.AddNumbers(1, num1, num2)[0] as double[,]; var sum = result[0, 0]; Console.WriteLine($"Result: {num1} + {num2} = {sum}"); } } }
-
빌드 결과로 생성된
AddNumbersByMatlab.exe
파일을 실행하면 아래와 같은 결과가 출력될 것입니다.Result: 10.1 + 11.2 = 21.3
정리
DLL 배포시 참고 사항
- MATLAB Runtime 설치 파일의 크기는 1GB 정도입니다.
- C# 응용프로그램을 처음 실행할 때에는 MATLAB Runtime을 로딩하는데 많은 시간이 걸립니다. 위의 개발 환경에서 처음 실행시 22초 정도, 두 번째 실행부터는 4초 정도 걸렸습니다.
프로젝트 파일
본문에서 소개한 프로젝트 파일을 GitHub에 올려 놓았습니다.
Written with StackEdit.