본문 바로가기
.NET/MAUI

MSVS 2022에서 SO 파일 제작 방법

by leo21c 2026. 1. 12.

윈도우의 DLL(Dynamic Link Library)에 해당하는 것이 리눅스나 안드로이드에서는 SO(Shared Object) 파일입니다. Visual Studio(MSVS)는 훌륭한 크로스 플랫폼 개발 도구이기 때문에, 윈도우 환경에서도 안드로이드용 .so 파일을 직접 빌드할 수 있습니다.

MAUI 안드로이드 앱 개발에 맞춰 Visual Studio 2022를 기준으로 .so 파일을 생성하는 과정을 단계별로 설명입니다.

1단계: 필요 구성 요소(워크로드) 설치

Visual Studio가 안드로이드용 C++ 코드를 빌드하려면 관련 도구가 설치되어 있어야 합니다.

  1. Visual Studio Installer를 실행합니다.
  2. 현재 사용 중인 VS 2022의 [수정] 버튼을 클릭합니다.
  3. "C++를 사용한 모바일 개발" (Mobile development with C++) 워크로드를 체크합니다.
    •   이때 우측의 '설치 세부 정보'에서 **Android NDK (Rxx...)**가 체크되어 있는지 확인하세요.
  4. 설치 또는 수정을 완료합니다.

2단계: 안드로이드용 C++ 프로젝트 생성

윈도우용 DLL 프로젝트가 아니라, 안드로이드용 동적 라이브러리 프로젝트를 만들어야 합니다.

  1. Visual Studio에서 **[새 프로젝트 만들기]**를 선택합니다.
  2. 상단 검색창에 **"Android"**를 입력하고 필터 언어를 **"C++"**로 선택합니다.
  3. 검색 결과 중 [동적 공유 라이브러리(Android)] 또는 **[Dynamic Shared Library (Android)]**를 선택하고 [다음]을 누릅니다.
  4. 프로젝트 이름(예: NativeLib)을 입력하고 [만들기]를 클릭합니다.

3단계: 코드 작성 (extern "C" 필수)

프로젝트가 생성되면 .cpp 파일 또는 .c 파일이 보입니다. 여기에 보안 키 관련 코드를 작성합니다.

  • 중요: C++ 파일(.cpp)을 사용하더라도, C#이나 다른 언어에서 함수 이름을 찾을 수 있게 하려면 반드시 extern "C"를 사용해야 합니다.
#include "NativeLib.h"

// extern "C" 블록 안에 함수를 작성해야 함수 이름이 유지됩니다.
extern "C" {

    // 외부에서 호출할 함수 (예: 보안 키 반환)
    const char* GetSecureKey() {
        // 실제로는 여기서 복호화 로직을 수행하거나 조합하여 반환
        return "My_Secret_Key_For_MAUI";
    }

    // 테스트용 덧셈 함수
    int NativeAdd(int a, int b) {
        return a + b;
    }
}

4단계: 빌드 설정 (가장 중요)

윈도우 개발과 가장 다른 부분입니다. 안드로이드 폰의 CPU 아키텍처에 맞춰 빌드해야 합니다.

  1. 상단 툴바의 솔루션 플랫폼 드롭다운을 확인합니다. (기본값은 보통 x86이나 ARM일 수 있습니다.)
  2. 실제 안드로이드 폰(갤럭시 등 최신 기기)에서 돌리려면 **ARM64**를 선택해야 합니다.
    • ARM64: 최신 안드로이드 스마트폰용
    • x86_64 / x86: 안드로이드 에뮬레이터(PC)용
    • ARM: 구형 안드로이드 기기용
  3. 솔루션 구성은 개발 중에는 Debug, 배포 시에는 Release를 선택합니다.
  4. 메뉴에서 **[빌드] -> [솔루션 빌드]**를 클릭합니다.

5단계: 생성된 .so 파일 확인

빌드가 성공하면 프로젝트 폴더 내에 .so 파일이 생성됩니다.

  1. 파일 탐색기를 열고 프로젝트 폴더로 이동합니다.
  2. 경로는 보통 다음과 같습니다:
    • [솔루션폴더]\[프로젝트명]\ARM64\Debug\ (또는 Release)
  3. 해당 폴더 안에 lib[프로젝트명].so 파일이 있는지 확인합니다.
    • 예: 프로젝트 이름이 NativeLib이면 파일명은 자동으로 **libNativeLib.so**가 됩니다. (리눅스/안드로이드 명명 규칙)

6단계: MAUI 프로젝트에 적용

이제 이 파일을 복사해서 MAUI 프로젝트에 넣으시면 됩니다.

  1. 생성된 libNativeLib.so 파일을 복사합니다.
  2. MAUI 프로젝트의 Platforms\Android\Resources\lib\arm64-v8a\ 폴더 안에 붙여넣습니다. (폴더가 없으면 만드세요)
  3. 붙여넣은 파일의 속성에서 **빌드 작업(Build Action)**을 AndroidNativeLibrary로 설정합니다.
LIST