디시인사이드 갤러리

갤러리 이슈박스, 최근방문 갤러리

갤러리 본문 영역

C++, Rust, Ada 라이브러리를 다른 언어에서 사용하려면?

나르시갤로그로 이동합니다. 2025.11.25 19:36:17
조회 110 추천 0 댓글 0
														

C++, Rust, Ada 라이브러리를 Python 등 다른 언어에서 쓰려면?

대부분의 언어는 C와 연결할 수 있는 인터페이스를 제공하므로, Rust나 Ada로 만든 기능도 결국 C 형태로 내보낸 뒤 다른 언어에서 불러와 사용합니다.
즉, 언어 간 연동의 공통 분모는 C이며, Rust/Ada/C++ 라이브러리를 다른 언어에서 쓰려면 보통 C API를 통해 접근하게 됩니다.


C API 경계에서 예외/패닉 전파에 대한 주의사항

중요: C++, Rust로 작성한 함수를 C에서 호출할 경우, 해당 언어의 예외(Exception)나 패닉(Panic)이 발생하면 FFI 경계를 넘어 C 호출자(main 등)까지 전달될 수도 있습니다.
- Rust, C++의 경우 예외/패닉이 언와인딩을 시도하면서 C 호출자까지 넘어가면 정의되지 않은 동작(UB)이 발생합니다. 보통 프로그램이 abort되거나 예측 불가능한 결과를 초래합니다.
- Ada는 예외가 C 호출자에게 전달되지 않으며, 경계에서 바로 런타임이 프로그램을 종료합니다. 

따라서 C API로 노출되는 함수에서는 언어 내부에서 예외/패닉을 잡아 안전한 값(에러 코드 등)으로 변환하는 것이 일반적인 패턴입니다.


C++ 예시: try/catch로 예외를 잡아 에러 코드 반환

extern "C" int do_work_c(int input) {
    try {
        if (input < 0) throw std::invalid_argument("negative");
        return 0;                 // 성공
    } catch (const std::invalid_argument&) {
        return -1;                // 입력 오류
    } catch (...) {
        return -2;                // 알 수 없는 예외
    }
}

Rust 예시: catch_unwind로 패닉을 잡아 에러 코드 반환

use std::panic::{catch_unwind, AssertUnwindSafe};

#[no_mangle]
pub extern "C" fn do_work_c(input: i32) -> i32 {
    let result = catch_unwind(AssertUnwindSafe(|| {
        if input < 0 { panic!("negative"); }
        0
    }));

    match result {
        Ok(code) => code,
        Err(_) => -1, // 패닉 발생
    }
}

Ada 예시: exception 블록으로 예외를 잡아 에러 코드 반환

function Do_Work_C (Input : Interfaces.C.int) return Interfaces.C.int
  with Convention => C is
begin
   if Input < 0 then
      raise Constraint_Error;
   end if;
   return 0;
exception
   when Constraint_Error =>
      return -1;
   when others =>
      return -2;
end Do_Work_C;

결론

  • Rust, Ada, C++ 라이브러리를 다른 언어에서 쓰려면 보통 C API를 통해 접근한다.
  • Rust, C++ 예외/패닉은 C 경계를 넘을 수도 있지만 UB → 언어 내부에서 잡아야 한다.
  • Ada 예외는 C 호출자에게 전달되지 않고 런타임이 종료한다.
  • 안전한 패턴: C API에서는 에러 코드/상태값만 반환하고, 메시지는 별도 API나 버퍼 인자를 통해 전달하는 방식이 일반적이다.

추천 비추천

0

고정닉 0

0

댓글 영역

전체 댓글 0
본문 보기

하단 갤러리 리스트 영역

왼쪽 컨텐츠 영역

갤러리 리스트 영역

갤러리 리스트
번호 제목 글쓴이 작성일 조회 추천
설문 연말 모임 가는 곳마다 가장 인싸일 것 같은 스타는? 운영자 25/12/08 - -
이슈 [디시人터뷰] 솔직함을 리뷰하는 유튜버, 흑백리뷰 운영자 25/12/09 - -
AD 루틴 ON! 운동 찐템! 지금 할인 중 운영자 25/11/27 - -
2906094 신입 퇴사 고소 예정 [5] 프갤러(106.102) 12.02 141 0
2906091 윤석열에 베팅 발명도둑잡기(118.235) 12.02 93 0
2906088 대학원 면접 때 양복 입어야 되나? [3] 나르시갤로그로 이동합니다. 12.02 87 0
2906086 ‘왕초 윤석열과 권력층 도둑들’ 또 나라 삼킬 수 있다 발명도둑잡기(118.235) 12.02 100 0
2906085 늦지 않게 도착했군 [7] 개멍청한유라갤로그로 이동합니다. 12.02 112 0
2906084 [대한민국] 악의 무리들과 싸우는 위대한 미국 ㅇㅇ(121.172) 12.02 87 1
2906083 윤석열 3년간 국가적 손실 300조씩 발생했다 [2] 발명도둑잡기(118.235) 12.02 102 0
2906082 일하는 척 하는 웹사이트ㅡ관심부ㅏㄱ탁드립ㄴ다 프갤러(58.72) 12.02 68 0
2906081 쿠팡 it직원 대부분이 중국인이라고 하네 [6] 헬마스터갤로그로 이동합니다. 12.02 139 0
2906080 나 어떤 프로그램 하나 짰는데 [2] 프갤러(85.12) 12.02 133 0
2906078 라이브코딩 테스트는 뭐 보는거임? [2] ㅇㅇ(182.228) 12.02 99 0
2906076 보안 사고마다 벌금 먹여서 파산시키고 정부가 인수해야 [2] 프갤러(110.8) 12.02 132 0
2906075 안녕하세요. [2] ㅇㅇ(211.169) 12.02 97 0
2906074 인지과학조져라 손발이시립디다갤로그로 이동합니다. 12.02 86 0
2906073 그냥 말하는거 딱 들어보면 알어 ㅇㅇ갤로그로 이동합니다. 12.02 171 0
2906070 ??? ㅇㅅㅇ [4] 헤르 미온느갤로그로 이동합니다. 12.02 115 0
2906069 GPT 나온 뒤로 해킹이 많아진듯 프갤러(223.194) 12.02 119 0
2906068 쿠팡은 안 망해 다른 곳도 보안이슈 터지겠지 [1] ㅇㅇ(114.30) 12.02 101 0
2906064 오리 ㅇㅅㅇ [1] 헤르 미온느갤로그로 이동합니다. 12.02 102 0
2906061 태연 ㅇㅅㅇ 헤르 미온느갤로그로 이동합니다. 12.02 84 0
2906060 하루 한 번 헤르미온느 찬양 헤르 미온느갤로그로 이동합니다. 12.02 97 0
2906059 쿠팡 불매 어느정도로 될까? ㅇㅅㅇ [1] 헤르 미온느갤로그로 이동합니다. 12.02 103 0
2906057 php가 그렇게 병신같은 언어임? [1] ㅇㅇ(125.137) 12.02 133 0
2906050 물가 올라서 만들오봄 오잉(118.235) 12.02 111 0
2906045 전세계 간첩들 제일살기좋고 바쁜시대여 ㅋㅋㅋㅋ 타이밍뒷.통수한방(1.213) 12.02 98 1
2906043 해커톤상금좀털러가볼까 따당갤로그로 이동합니다. 12.02 112 0
2906041 한국 개발자 평균 수준이 이미 중국 밑입니다. 프갤러(110.8) 12.02 143 1
2906031 얘들아 고마웠다 [1] ㅇㅇ(118.235) 12.02 118 0
2906032 재활용 분리수거 질문드려요. 넥도리아(220.74) 12.02 89 0
2906028 나노바나나 [1] ㅇㅇ갤로그로 이동합니다. 12.02 106 0
2906011 인정욕구의 개념을 잘못 알던 헬마스터 병신새끼는 프갤러(211.36) 12.01 86 0
2905997 음기 충전 발명도둑잡기(39.7) 12.01 111 0
2905992 중국인이 몸값 ㅈㄴ싼데 일은 잘해 ㅇㅇ(221.168) 12.01 108 0
2905989 나르시야 github갤에 가라 거기 웹쟁이좀 패라 [1] 프갤러(61.75) 12.01 91 0
2905988 쿠팡 해킹범 짱깨라며 어째 해킹범 욕하는 기관이 하나도 없냐 ㅋㅋ [6] ㅇㅇ(124.48) 12.01 153 1
2905987 홍콩 무협과 힙합 발명도둑잡기(39.7) 12.01 59 0
2905983 오로지 연봉 때문에 이직하는경우 있음? [20] ㅇㅇ(221.168) 12.01 175 0
2905979 날아다니는 스파게티 괴물 발명도둑잡기(39.7) 12.01 73 0
2905976 해킹 피해자가 아니라 가해자였던 결혼정보업체 발명도둑잡기(39.7) 12.01 91 0
2905974 소액 알바 하다가 스파이가 된 이야기 발명도둑잡기(39.7) 12.01 73 0
2905968 경찰 “쿠팡 개인정보 유출, 기업 보안사고 넘어 국민 발명도둑잡기(39.7) 12.01 65 0
2905961 [애니뉴스] YxD Ads 개발중 ㅇㅇ(121.172) 12.01 73 0
2905959 llm이 자꾸 인증방식을 jwt로 몰아가네 [2] 프갤러(221.149) 12.01 112 0
2905957 [애니뉴스] YxD Labs 검색 버튼 추가 ㅇㅇ(121.172) 12.01 68 0
2905946 디지털 소유권 환상론으로 유튜브, 스테이블코인도 증발할 수 있다 발명도둑잡기(39.7) 12.01 78 0
2905942 현실에 나타난 아카자.jpg ㅁㅁㅅ갤로그로 이동합니다. 12.01 124 0
2905941 점심 간식 저녁 발명도둑잡기(39.7) 12.01 72 0
2905938 우왓, 연회중에 피분수가..ㅡㅡ;; [1] 박정희대통령갤로그로 이동합니다. 12.01 89 1
2905937 "'트럼프시대 美활동' 중국계 연구자, 문화대혁명 같은 혼란 중" 발명도둑잡기(39.7) 12.01 64 0
2905935 [단독] 정부, 쿠팡에 최대 1조3300억 과징금 … 국민 정보 통째 유 발명도둑잡기(39.7) 12.01 87 0
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

디시미디어

디시이슈

1/2