기본 콘텐츠로 건너뛰기

MATLAB Compiler SDK로 DLL 만들기

MATLAB Compiler SDK로 DLL 만들기

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 파일 만들기

  1. MATLAB에서 메뉴를 클릭합니다.

  2. 항목 중에서 Library Compiler를 실행하여 MATLAB Compiler 화면을 엽니다.

  3. Type 목록에서 .NET Assembly를 선택합니다.

  4. EXPORTED FUNCTIONS 목록의 + 버튼을 클릭하여 아래 항목을 추가합니다.

    • AddNumbers.m
  5. Library information 영역에서 아래 사항들을 입력합니다.

    • Library name: AddNumbersMatlab
    • Version: 1.0
    • Author Name:
    • Email:
    • Company:
    • Summary: Add two numbers.
    • Description:
    • Namespace:
    • Class Name: AddNumbersClass
  6. Additional installer options 영역에서 아래 사항을 입력합니다.

    • Default installation folder: AddNumbersMatlab
  7. Files required to run your library 영역에서 + 버튼을 클릭하여 라이브러리를 실행하는데 필요한 파일을 추가할 수 있습니다. 이 예제에서는 직접 추가해 주어야 할 파일이 없으므로 다음 단계로 넘어갑니다.

  8. 화면 상단에서 아래 항목을 선택하고 Package 버튼을 클릭합니다.

    • Runtime downloaded from web: AddNumbersMatlabInstaller_web (5 MB)
  9. 프로젝트 저장 대화상자에서 아래 항목을 지정하고 저장 버튼을 클릭합니다.

    • 파일 이름: AddNumbersMatlab.prj

Visual Studio에서 DLL 파일 사용하기

  1. Visual Studio에서 C# 프로젝트를 생성합니다.

    • 프로젝트 템플릿: 콘솔 앱 (.NET Framework)
    • 프로젝트 이름: AddNumbersByMatlab
    • 솔루션 및 프로젝트를 같은 디렉토리에 배치
  2. 솔루션 탐색기의 프로젝트 항목에서 컨텍스트 메뉴를 띄우고 추가 > 참조… 항목을 클릭합니다.

  3. 참조 관리자 대화상자에서 하단의 찾아보기… 버튼을 클릭하고 아래 항목을 추가합니다.

    • AddNumbersMatlab\for_redistribution_files_only\AddNumbersMatlabNative.dll
  4. 솔루션 탐색기의 프로젝트 항목에서 컨텍스트 메뉴를 띄우고 속성 항목을 클릭합니다.

  5. 화면 왼쪽의 빌드 항목을 클릭하고 일반 영역에서 아래와 같이 변경합니다.

    • 플랫폼 대상: Any CPU → x64
  6. 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}");
            }
        }
    }
    
  7. 빌드 결과로 생성된 AddNumbersByMatlab.exe 파일을 실행하면 아래와 같은 결과가 출력될 것입니다.

    Result: 10.1 + 11.2 = 21.3
    

정리

DLL 배포시 참고 사항

  • MATLAB Runtime 설치 파일의 크기는 1GB 정도입니다.
  • C# 응용프로그램을 처음 실행할 때에는 MATLAB Runtime을 로딩하는데 많은 시간이 걸립니다. 위의 개발 환경에서 처음 실행시 22초 정도, 두 번째 실행부터는 4초 정도 걸렸습니다.

프로젝트 파일

본문에서 소개한 프로젝트 파일을 GitHub에 올려 놓았습니다.

Written with StackEdit.

댓글

이 블로그의 인기 게시물

Windows에 AMP와 MediaWiki 설치하기

1. 들어가기     AMP는 Apache + MySQL +  Perl/PHP/Python에 대한 줄임말이다. LAMP (Linux + AMP)라고 하여 Linux에 설치하는 것으로 많이 소개하고 있지만 Windows에서도 간편하게 설치하여 사용할 수 있다.       이 글은 Windows 7에 Apache + MySQL + PHP를 설치하고 그 기반에서 MediaWiki를 설치하여 실행하는 과정을 간략히 정리한 것이다. 2. MySQL     * 버전 5.6.12     1) 다운로드         http://dev.mysql.com/downloads/installer/         MySQL Installer 5.6.12         Windows (x86, 32-bit), MSI Installer         (mysql-installer-web-community-5.6.12.0.msi)     2) 다운로드한 MSI 파일을 더블클릭하여 설치를 진행한다.           설치 위치:                   C:\Program Files\MySQL               선택 사항:                       Install MySQL Products             Choosing a Se...

MATLAB Rutime 설치하기

MATLAB Rutime 설치하기 미설치시 에러 MATLAB Runtime 을 설치하지 않은 환경에서 MATLAB 응용프로그램이나 공유 라이브러리를 사용하려고 하면 아래와 같은 에러 메시지가 표시될 것입니다. 처리되지 않은 예외: System.TypeInitializationException: 'MathWorks.MATLAB.NET.Utility.MWMCR'의 형식 이니셜라이저에서 예 외를 Throw했습니다. ---> System.TypeInitializationException: 'MathWorks.MATLAB.NET.Arrays.MWArray'의 형식 이니셜라이저에서 예외를 Throw했습니다. ---> System.DllNotFoundException: DLL 'mclmcrrt9_3.dll'을(를) 로드할 수 없습니다. 지정된 모듈을 찾을 수 없습니다. (예외가 발생한 HRESULT: 0x8007007E) 위치: MathWorks.MATLAB.NET.Arrays.MWArray.mclmcrInitialize2(Int32 primaryMode) 위치: MathWorks.MATLAB.NET.Arrays.MWArray..cctor() --- 내부 예외 스택 추적의 끝 --- 위치: MathWorks.MATLAB.NET.Utility.MWMCR..cctor() --- 내부 예외 스택 추적의 끝 --- 위치: MathWorks.MATLAB.NET.Utility.MWMCR.processExiting(Exception exception) 해결 방법 이 문제를 해결하기 위해서는 MATLAB Runtime 을 설치해야 합니다. 여러 가지 방법으로 MATLAB Runtime 을 설치할 수 있습니다. MATLAB 이 설치되어 있는 경우에는 MATLAB 설치 폴더 아래에 있는 MATLAB Runtime 설치 프로그램을 실행하여 설치합니다. ...

Wi-Fi 카드 2.4GHz로만 동작시키기

Wi-Fi 카드 2.4GHz로만 동작시키기 별도의 Wi-Fi AP 장치를 두지 않고 아래와 같은 기기들로만 Wi-Fi 네트워크를 구성하고자 할 때 주변 기기들이 2.4GHz만 지원하기 때문에 PC에서 실행하는 AP가 항상 2.4GHz를 사용하도록 Wi-Fi 카드를 설정해 주어야 합니다. 기기 Wi-Fi 카드 주파수 대역 Wi-Fi Direct 지원 PC (Windows 10) 2.4GHz, 5GHz O 주변 기기들 2.4GHz X Wi-Fi 카드별 주파수 대역 선택 방법 Windows 시작 메뉴에서 설정 을 클릭합니다. Windows 설정 화면에서 네트워크 및 인터넷 을 클릭합니다. 설정 화면의 왼쪽 메뉴바에서 Wi-Fi 를 클릭합니다. 화면 오른쪽 관련 설정 구역에 있는 어댑터 옵션 변경 을 클릭합니다. 설정을 바꾸고자 하는 Wi-Fi 카드 항목을 선택하고 마우스 오른쪽을 누른 다음 속성 메뉴를 클릭합니다. 대화상자의 네트워킹 탭 화면에 있는 구성 버튼을 클릭합니다. 장치 속성 대화상자의 고급 탭 화면으로 이동합니다. 제시되는 속성 항목들은 제품별로 다르며 자세한 사항은 아래의 제품별 설명을 참고하여 값을 설정하시기 바랍니다. Intel Dual Band Wireless-AC 7265 기술 사양 주파수 대역: 2.4GHz, 5GHz 무선 표준: 802.11ac 주파수 대역 선택 장치 속성 대화상자에서 아래와 같이 선택합니다. Wireless Mode 1. 802.11a => 5GHz 4. 802.11b/g => 2.4GHz (이 항목 선택) 6. 802.11a/b/g => 2.4GHz, 5GHz Intel Dual Band Wireless-AC 8265 기술 사양 주파수 대역: 2.4GHz, 5GHz 무선 표준: 802.11ac 주파수 대역 선택 장치 속성 대화상자에서 아래와 같이 ...