주요 콘텐츠

.NET 어셈블리를 생성하고 .NET 애플리케이션 빌드하기

지원되는 플랫폼: Windows®

이 예제에서는 MATLAB® 함수에서 .NET 어셈블리를 생성하고 이 생성된 어셈블리를 .NET 애플리케이션에 통합하는 방법을 보여줍니다.

이 예제에서는 레거시 MWArray API를 사용합니다. 최신 MATLAB Data API를 사용하여 .NET 어셈블리를 생성하려면 Deploy MATLAB Function to .NET Application Using MATLAB Data API for .NET 항목을 참조하십시오. 프로젝트에 적합한 배포 옵션을 선택하려면 Choose .NET Deployment Option 항목을 참조하십시오.

선행 조건

  • MATLAB Compiler SDK™ .NET 타깃 요구 사항을 모두 충족했는지 확인합니다. 자세한 내용은 MATLAB Compiler SDK .NET Target Requirements 항목을 참조하십시오.

  • Microsoft® Visual Studio®가 설치되어 있는지 확인합니다. .NET을 사용한 애플리케이션 개발에 대한 자세한 내용은 Set Up .NET Development Environment 항목을 참조하십시오.

  • 최종 사용자는 애플리케이션을 실행하려면 MATLAB Runtime을 설치해야 합니다. 자세한 내용은 MATLAB Runtime 다운로드 및 설치하기 항목을 참조하십시오.

    테스트 목적으로 MATLAB Runtime 대신 MATLAB를 설치하여 사용할 수 있습니다.

MATLAB에서 함수 만들기

MATLAB에서, 패키징하려는 MATLAB 코드를 검사합니다. 이 예제에서는 makesquare.m이라는 이름의 MATLAB 스크립트를 만듭니다.

function y = makesquare(x)
y = magic(x);

MATLAB 명령 프롬프트에 makesquare(5)를 입력합니다.

출력값은 5×5 행렬입니다.

    17    24     1     8    15
    23     5     7    14    16
     4     6    13    20    22
    10    12    19    21     3
    11    18    25     2     9

compiler.build.dotNETAssembly를 사용하여 .NET 어셈블리 만들기

프로그래밍 방식을 사용하여 .NET 어셈블리를 빌드합니다. 또는 그래픽 인터페이스를 사용하여 .NET 어셈블리를 생성하려면 Package MATLAB Function Using .NET Assembly Compiler App 항목을 참조하십시오.

  1. 아직 파일 makesquare.m을 만들지 않았다면 matlabroot\toolbox\dotnetbuilder\Examples\VS15\NET\MagicSquareExample\MagicSquareComp에 있는 예제 파일을 복사합니다.

    copyfile(fullfile(matlabroot,'toolbox','dotnetbuilder','Examples',...
    'VS15','NET','MagicSquareExample','MagicSquareComp','makesquare.m'));
  2. 다음 코드를 makesquareSample1.m이라는 이름의 샘플 파일에 저장합니다.

    x = 5;
    y = makesquare(x);

  3. compiler.build.dotNETAssembly 함수를 사용하여 .NET 어셈블리를 빌드합니다. 이름-값 인수를 사용하여 어셈블리 이름, 클래스 이름, 샘플 파일을 지정합니다.

    buildResults = compiler.build.dotNETAssembly('makesquare.m',...
    'AssemblyName','MagicSquareComp',...
    'ClassName','MagicSquareClass',...
    'SampleGenerationFiles','makesquareSample1.m');

    compiler.build 명령에서 이름-값 인수를 사용하여 추가 옵션을 지정할 수 있습니다. 자세한 내용은 compiler.build.dotNETAssembly 항목을 참조하십시오.

    compiler.build.Results 객체 buildResults에는 빌드 유형, 생성된 파일, 포함된 지원 패키지, 빌드 옵션에 대한 정보가 포함됩니다.

    이 함수는 현재 작업 디렉터리에 있는 MagicSquareCompdotNETAssembly라는 이름의 폴더 내에 다음 파일을 생성합니다.

    • samples\makesquareSample1.cs — C# .NET 샘플 파일.

    • GettingStarted.html — 명령줄에서 .NET 드라이버 애플리케이션을 컴파일하는 단계가 포함되어 있는 HTML 파일.

    • includedSupportPackages.txt — 어셈블리에 포함된 모든 지원 파일을 나열하는 텍스트 파일.

    • MagicSquareComp.dllmwArray API를 사용하여 액세스할 수 있는 동적 연결 라이브러리 파일.

    • MagicSquareComp.xmlmwArray 어셈블리에 대한 문서가 포함되어 있는 XML 파일.

    • MagicSquareComp_overview.html — 어셈블리에 액세스하고 mwArray 클래스 계층 구조를 사용하여 인수를 생성하는 데 필요한 요구 사항이 포함되어 있는 HTML 파일.

    • MagicSquareCompNative.dll — 네이티브 API를 사용하여 액세스할 수 있는 동적 연결 라이브러리 파일.

    • MagicSquareCompNative.xml — 네이티브 어셈블리에 대한 문서가 포함되어 있는 XML 파일.

    • MagicSquareCompVersion.cs — 버전 정보가 포함되어 있는 C# 파일.

    • mccExcludedFiles.log — 애플리케이션에 포함되지 않은 툴박스 함수 목록이 포함되어 있는 로그 파일. 지원되지 않는 함수에 대한 자세한 내용은 MATLAB Compiler 제한 사항 항목을 참조하십시오.

    • readme.txt — 패키징 정보와 인터페이스 정보가 포함되어 있는 텍스트 파일.

    • requiredMCRProducts.txtMATLAB Runtime에서 애플리케이션을 실행하는 데 필요한 제품의 제품 ID가 포함되어 있는 텍스트 파일.

    • unresolvedSymbols.txt — 연결이 맺어지지 않은 기호에 대한 정보가 포함되어 있는 텍스트 파일.

    참고

    생성된 어셈블리는 MATLAB Runtime 또는 인스톨러를 포함하지 않습니다. buildResults 객체를 사용하여 인스톨러를 만들려면 compiler.package.installer 항목을 참조하십시오.

.NET 애플리케이션에 .NET 어셈블리 통합하기

.NET 어셈블리를 만든 후에는 .NET 애플리케이션에 통합할 수 있습니다. 이 예제에서는 패키징 중에 생성된 샘플 C# 애플리케이션 코드를 사용합니다. 이 샘플 .NET 애플리케이션 코드를 가이드로 참고하여 애플리케이션을 직접 작성할 수 있습니다.

참고

입력 인수를 받는 고급 애플리케이션을 사용하여 어셈블리를 호출하려면 다음 하위 폴더에 있는 C# 또는 Visual Basic® 애플리케이션 MagicSquareApp을 사용합니다.

matlabroot\toolbox\dotnetbuilder\Examples\VS15\NET\MagicSquareExample\

  1. Microsoft Visual Studio를 열고 C# Console App (.NET Framework)MainApp을 만듭니다.

  2. 필요한 경우, 프로젝트 내에 생성된 소스 코드 파일을 모두 제거합니다.

  3. samples 폴더에 생성된 샘플 C# 애플리케이션 코드 makesquareSample1.cs를 프로젝트에 추가합니다.

    아래에 프로그램 목록이 표시되어 있습니다.

    using System;
    using System.Collections.Generic;
    using System.Text;
    using MathWorks.MATLAB.NET.Arrays;
    using MathWorks.MATLAB.NET.Utility;
    using MagicSquareComp;
    
    /// <summary>
    /// Sample driver code that integrates a compiled MATLAB function
    /// generated by MATLAB Compiler SDK
    ///
    /// Refer to the MATLAB Compiler SDK documentation for more
    /// information.
    /// </summary>
    class makesquareSample1 {
        static MagicSquareClass MagicSquareClassInstance;
    
        static void Setup() {
            MagicSquareClassInstance = new MagicSquareClass();
        }
    
        /// <summary>
        /// Example of using the makesquare function.
        /// </summary>
        public static void makesquareSample() {
            double xInData = 5.0;
            MWNumericArray yOut = null;
            Object[] results = null;
            try {
                MWNumericArray xIn = new MWNumericArray(xInData);
                results = MagicSquareClassInstance.makesquare(1, xIn);
                if (results[0] is MWNumericArray) {
                    yOut = (MWNumericArray) results[0];
                }
                Console.WriteLine(yOut);
            } catch (Exception e) {
                Console.WriteLine(e);
            }
        }
    
        /// <summary>
        /// The main entry point for the application.
        /// </summary>
        static void Main(string[] args) {
            try {
                Setup();
            } catch (Exception e) {
                Console.WriteLine(e);
                Environment.Exit(1);
            }
            try {
                makesquareSample();
            } catch (Exception e) {
                Console.WriteLine(e);
                Environment.Exit(1);
            }
        }
    }

    프로그램은 다음을 수행합니다.

    • 예외 처리를 위해 try-catch 블록 사용

    • 입력 데이터 저장을 위해 MWNumericArray 배열 생성

    • MagicSquareClass 객체 results 인스턴스화

    • makesquare 메서드를 호출하며, 이때 첫 번째 파라미터는 출력 인수의 개수를 지정하고, 그 다음 파라미터들은 순서대로 함수에 입력 인수로 전달됩니다

    • 콘솔에 함수 출력값 쓰기

  4. Visual Studio에서, 어셈블리를 생성하거나 설치한 폴더에 있는 어셈블리 파일 MagicSquareComp.dll에 대한 참조를 추가합니다.

  5. MWArray API에 대한 참조를 추가합니다.

    시스템에 MATLAB이 설치되어 있는 경우matlabroot\toolbox\dotnetbuilder\bin\win64\<framework_version>\MWArray.dll
    시스템에 MATLAB Runtime이 설치되어 있는 경우<MATLAB_RUNTIME_INSTALL_DIR>\toolbox\dotnetbuilder\bin\win64\<framework_version>\MWArray.dll

  6. Build로 이동한 다음 Configuration Manager에서 플랫폼을 Any CPU에서 x64로 변경합니다.

  7. 코드와 참조 추가를 마친 후에 Visual Studio를 사용하여 애플리케이션을 빌드합니다.

    빌드 프로세스에서 makesquareSample1.exe라는 실행 파일이 생성됩니다.

  8. Visual Studio나 명령 창에서, 또는 생성된 실행 파일을 더블 클릭하여 애플리케이션을 실행합니다.

    애플리케이션은 샘플 MATLAB 코드와 동일한 출력값을 반환합니다.

        17    24     1     8    15
        23     5     7    14    16
         4     6    13    20    22
        10    12    19    21     3
        11    18    25     2     9

참고 항목

|

도움말 항목