본문 바로가기
Rust

Rust에서 dll 프로젝트 생성 후 적용

by lms0806 2025. 1. 23.
728x90

Rust에서 dll(동적 링크 라이브러리)를 만든 후, 타 언어(c, python, C#, C++, java 등)에서 사용이 가능합니다.

이번 시간에는 python에서 활용하는 방법에 대해 알아보고자 합니다.

dll 파일 만드는 방법

  1. lib 프로젝트 생성

     cargo new {{project_name}} --lib
  2. 프로젝트 설정

    1. Cargo.toml에 해당 내용 추가

       [lib]
       crate-type = ["cdylib"]
    2. 함수 앞에 용어 추가

       #[no_mangle] // 함수 이름이 변경되지 않도록 설정
       pub extern "C" fn add(left: u64, right: u64) -> u64 {
           left + right
       }
  3. 프로젝트 빌드(src 폴더로 들어가서)

     cargo build --release (--release 추가 안할경우, debug로 build됨)
  4. 프로젝트 활용(예시)

     import ctypes
    
     lib = ctypes.CDLL("./target/release/dll_test.dll")
    
     # Rust 함수의 반환 타입 및 매개변수 타입 정의
     lib.add.restype = ctypes.c_uint64  # 반환 타입 설정
     lib.add.argtypes = [ctypes.c_uint64, ctypes.c_uint64]  # 매개변수 타입 설정
    
     # 함수 호출
     result = lib.add(10, 20)
     print(f"Result from Rust: {result}")
  5. 결과

     Result from Rust: 30

dll로 만들기 전, test하는 방법

기본적으로 cargo new {{project_name}} —lib을 하게 되면 lib.rs 파일에 test코드가 작성됨

  • #[cfg(test)]: 테스트 모듈을 컴파일 시에만 활성화하도록 설정합니다.
  • #[test]: 테스트 함수임을 나타냅니다.

#[test] 가 있는 코드에 작성을 한 후, assert_eq!로 결과가 일치하는지 확인

해당 코드 작성 이후 해당 명령어를 터미널에 실행하여 확인

728x90

댓글