디시인사이드 갤러리

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

갤러리 본문 영역

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

나르시갤로그로 이동합니다. 2025.11.25 19:36:17
조회 94 추천 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/01 - -
AD 따뜻한 겨울나기! 방한용품 SALE 운영자 25/11/27 - -
공지 프로그래밍 갤러리 이용 안내 [97] 운영자 20.09.28 48804 65
2906131 '쿠팡 유출 사태'에 통관부호발급 시스템 접속 지연 발명도둑잡기(39.7) 18:16 0 0
2906130 [단독] 결국 尹 '외환유치' 적용 못 한 특검에… 與 72년 만 법 발명도둑잡기(39.7) 18:05 5 0
2906129 李대통령 "쿠데타 등 국가범죄, 나치 전범처럼 처벌해야" 발명도둑잡기(39.7) 17:59 6 0
2906128 아 진짜 나는 바보야. [2] 재현갤로그로 이동합니다. 17:53 13 0
2906127 “결제 정보는 안전하단 쿠팡 말, 다 믿으면 안 돼요” 발명도둑잡기(39.7) 17:41 9 0
2906126 英 노동·보수당원 46만... 규모보다 "게이트키핑 통한 균형" 필요 발명도둑잡기(39.7) 17:35 6 0
2906125 '음모론' 끌어안은 극우, 누가 이들을 고통스럽게 만들었나 발명도둑잡기(39.7) 17:34 7 0
2906122 통일교 민주당 커넥션 발각 ♥발라당냥덩♥갤로그로 이동합니다. 17:04 18 0
2906121 냥덩이가 인용하는 가짜뉴스는 반대로 보면 된다 발명도둑잡기(211.246) 16:56 14 0
2906120 요즘 뭐 볼게 없냐 프갤러(211.196) 16:53 19 0
2906119 국회방송 쿠팡 생중계 개꿀잼이누 타이밍뒷.통수한방(1.213) 16:32 28 0
2906118 1월 2일까지만 회사 나가기로 오늘 이야기 했습니다. ㅇㅇ(118.235) 16:26 19 0
2906117 [단독]국힘, 서울 조직위원장에 '허경영 최측근' 발명도둑잡기(211.246) 16:26 11 0
2906116 [사설]쿠팡, 5년간 고위 공무원 44명 영입… ‘할 일’ 않고 로비 매 발명도둑잡기(211.246) 16:24 19 0
2906114 [단독] 조작 정황 정영학, 법정 제출 검사는 '쿠팡 불기소' 엄희준 발명도둑잡기(211.246) 16:21 9 0
2906113 형들 커뮤니티 사이트 만들었는데 어떻게 유입 높이지? [3] 탱스갤로그로 이동합니다. 16:16 51 0
2906112 군사기밀 빼낸 '일본인' 간첩은 집행유예... 황당한 법 누가 만들 발명도둑잡기(211.246) 16:15 17 0
2906111 동남아 보다 못한 극좌 재명이 [1] ♥발라당냥덩♥갤로그로 이동합니다. 16:05 19 0
2906110 라이시테(Laïcité)는 프랑스식 세속주의, 정교분리 사상 발명도둑잡기(211.246) 15:53 14 0
2906108 "돈 필요 없다…쿠팡 中개발자, 앙심 품고 털었다?" 발명도둑잡기(211.246) 15:50 20 0
2906107 쿠팡 안되겠네. 국유화 해야겠네 [2] 프갤러(121.133) 15:37 32 0
2906106 WPF에 해답을 줘 이 프레임워크의 가치는 어디서옴? [4] 거북이속이거북갤로그로 이동합니다. 15:31 27 0
2906103 원래 쿠팡 김범석이 한국인 증오하는 사람이다 발명도둑잡기(211.246) 15:26 21 1
2906102 쿠팡 중국인 개발자가 인증 시스템 개발햇다고 함 [2] 헬마스터갤로그로 이동합니다. 15:14 41 1
2906100 chironpractor 얼마 받고 그러는건지 [5] 발명도둑잡기(211.246) 14:54 61 0
2906099 나님이 돈 벌 수 있는것도 다 우매한 좌파 덕분인듯? [3] ♥발라당냥덩♥갤로그로 이동합니다. 14:32 53 0
2906098 슈카 다시봤다 이건 엄청난 용기임 [5] ♥발라당냥덩♥갤로그로 이동합니다. 14:21 87 1
2906096 안타 달라스갤로그로 이동합니다. 13:53 18 0
2906095 nextjs가 김치 프론트 대세가 된건 재앙인듯 [2] ㅇㅇ(182.228) 13:47 45 0
2906094 신입 퇴사 고소 예정 [5] 프갤러(106.102) 13:39 67 0
2906091 윤석열에 베팅 발명도둑잡기(118.235) 13:07 30 0
2906088 대학원 면접 때 양복 입어야 되나? [3] 나르시갤로그로 이동합니다. 12:25 34 0
2906086 ‘왕초 윤석열과 권력층 도둑들’ 또 나라 삼킬 수 있다 발명도둑잡기(118.235) 12:23 22 0
2906085 늦지 않게 도착했군 [7] 개멍청한유라갤로그로 이동합니다. 12:22 53 0
2906084 [대한민국] 악의 무리들과 싸우는 위대한 미국 ㅇㅇ(121.172) 11:58 29 1
2906083 윤석열 3년간 국가적 손실 300조씩 발생했다 [2] 발명도둑잡기(118.235) 11:52 34 0
2906082 일하는 척 하는 웹사이트ㅡ관심부ㅏㄱ탁드립ㄴ다 프갤러(58.72) 11:46 21 0
2906081 쿠팡 it직원 대부분이 중국인이라고 하네 [6] 헬마스터갤로그로 이동합니다. 11:34 79 0
2906080 나 어떤 프로그램 하나 짰는데 [2] 프갤러(85.12) 11:30 70 0
2906079 ❤✨☀⭐⚡☘⛩☃나님 시작합니당☃⛩☘⚡⭐☀✨❤ [1] ♥발라당냥덩♥갤로그로 이동합니다. 11:00 33 0
2906078 라이브코딩 테스트는 뭐 보는거임? [2] ㅇㅇ(182.228) 10:54 38 0
2906077 가장 작은 냥덩이❤+ ♥발라당냥덩♥갤로그로 이동합니다. 09:51 38 0
2906076 보안 사고마다 벌금 먹여서 파산시키고 정부가 인수해야 [2] 프갤러(110.8) 09:27 50 0
2906075 안녕하세요. [2] ㅇㅇ(211.169) 08:54 44 0
2906074 인지과학조져라 손발이시립디다갤로그로 이동합니다. 08:34 38 0
2906073 그냥 말하는거 딱 들어보면 알어 ㅇㅇ갤로그로 이동합니다. 08:19 61 0
2906071 모바일 앱 제작 크몽 의뢰 질문 [5] 프갤러(118.221) 06:30 79 0
2906070 ??? ㅇㅅㅇ [4] 헤르 미온느갤로그로 이동합니다. 06:18 55 0
2906069 GPT 나온 뒤로 해킹이 많아진듯 프갤러(223.194) 06:06 54 0
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

디시미디어

디시이슈

1/2