728x90
Rust에서 dll(동적 링크 라이브러리)를 만든 후, 타 언어(c, python, C#, C++, java 등)에서 사용이 가능합니다.
이번 시간에는 python에서 활용하는 방법에 대해 알아보고자 합니다.
dll 파일 만드는 방법
lib 프로젝트 생성
cargo new {{project_name}} --lib
프로젝트 설정
Cargo.toml에 해당 내용 추가
[lib] crate-type = ["cdylib"]
함수 앞에 용어 추가
#[no_mangle] // 함수 이름이 변경되지 않도록 설정 pub extern "C" fn add(left: u64, right: u64) -> u64 { left + right }
프로젝트 빌드(src 폴더로 들어가서)
cargo build --release (--release 추가 안할경우, debug로 build됨)
프로젝트 활용(예시)
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}")
결과
Result from Rust: 30
dll로 만들기 전, test하는 방법
기본적으로 cargo new {{project_name}} —lib을 하게 되면 lib.rs 파일에 test코드가 작성됨
#[cfg(test)]
: 테스트 모듈을 컴파일 시에만 활성화하도록 설정합니다.#[test]
: 테스트 함수임을 나타냅니다.
#[test]
가 있는 코드에 작성을 한 후, assert_eq!
로 결과가 일치하는지 확인
해당 코드 작성 이후 해당 명령어를 터미널에 실행하여 확인
728x90
댓글