디시인사이드 갤러리

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

갤러리 본문 영역

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

나르시갤로그로 이동합니다. 2025.11.25 19:36:17
조회 76 추천 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/11/24 - -
AD 따뜻한 겨울나기! 방한용품 SALE 운영자 25/11/27 - -
공지 프로그래밍 갤러리 이용 안내 [97] 운영자 20.09.28 48792 65
2905493 모처럼 모진말들을 뱉어내고 나면 개멍청한유라갤로그로 이동합니다. 20:30 3 0
2905492 기레기 시발놈들 때문에 주가가 올라가고 내려가고 하는데 사람낚는어부갤로그로 이동합니다. 20:14 24 0
2905491 외국계 it support 테크니션이면 어떤 일임?? 프갤러(121.138) 20:06 8 0
2905490 나님 끙야하면서 트림했어양⭐+ [1] ♥멘헤라냥덩♥갤로그로 이동합니다. 19:59 17 0
2905489 나님 달밤의 끙야즁⭐+ ♥멘헤라냥덩♥갤로그로 이동합니다. 19:56 8 0
2905488 이태원 모욕죄 벌금 100이면 인생 하드모드 입갤임? 취업, 이민 종결? ㅇㅇ(118.235) 19:52 8 0
2905486 저 애미뒤진새끼는 아직도 있노 [1] ㅇㅇ(223.38) 19:52 26 0
2905482 뿡야하면 냥덩이 한번 털어줘야함❤+ [3] ♥멘헤라냥덩♥갤로그로 이동합니다. 19:29 16 0
2905478 요즘 해킹 많이 당하네 [2] 사람낚는어부갤로그로 이동합니다. 18:56 52 0
2905476 관세사 따도 초봉 3000~4000 아니냐 ㅇㅅㅇ 류류(118.235) 18:50 15 0
2905475 이태원모욕죄100만원 정식재판청구? 걍내고끝내? 인생에 별 지장 없? [2] ㅇㅇ(118.235) 18:43 17 0
2905472 35살 모욕죄 전과자+좆견인인데, 관세사따면 결혼 가능 스펙임? [1] ㅇㅇ(203.232) 18:29 28 0
2905471 우왓, 연회중에 피분수가..ㅡㅡ;; [2] 박정희대통령갤로그로 이동합니다. 18:18 34 3
2905466 동기 부여 발명도둑잡기(211.235) 16:51 13 0
2905465 모기로 프린터를 만들어 발명도둑잡기(211.235) 16:48 14 0
2905464 청소년이 밤 10시 이후에 발명도둑잡기(211.235) 16:45 12 0
2905463 ❤✨☀⭐⚡☘⛩☃나님 시작합니당☃⛩☘⚡⭐☀✨❤ ♥멘헤라냥덩♥갤로그로 이동합니다. 16:44 17 0
2905461 사람인하고 점핏하고 다른 회사임? ㅇㅇ(182.228) 16:25 18 0
2905460 경력 1년이상, 3년이상 뽑는 회사 [1] ㅇㅇ갤로그로 이동합니다. 16:13 36 0
2905456 유관순은 3.1운동할 때 인공기 흔들었냐? [2] chironpractor갤로그로 이동합니다. 15:53 36 0
2905454 중·일 갈등 ‘패싱’ 미국에···일본은 불안하다 발명도둑잡기(118.216) 15:29 18 0
2905453 ‘한미일 vs 북중러’ 구도 위험성 더 커진다 [2] 발명도둑잡기(118.216) 15:21 21 0
2905452 이젠 뭐가 ai이고 진짜인지 분간이 잘 안 간당.. [5] ♥멘헤라냥덩♥갤로그로 이동합니다. 15:20 66 0
2905451 밤에도 못 자고 일하니까 출생률이 떨어지는 것이다 [1] 발명도둑잡기(118.216) 15:13 19 0
2905450 윤석열 “전한길은 하나님이 한국에 보낸 선물” 옥중 편지 발명도둑잡기(118.216) 15:06 15 0
2905448 '아쉽다. 뽀뽀'…부하 여경 손 깍지·허리 감싼 경찰관 유죄 확정 발명도둑잡기(118.216) 15:01 10 0
2905447 美서 의미 퇴색한 '블프 세일'…"행사 진정성 사라져" 발명도둑잡기(118.216) 14:56 12 0
2905446 '케네디家' 끝없는 비극?…35살 외손녀 시한부 판정 발명도둑잡기(118.216) 14:53 16 0
2905445 5억짜리 ‘인간 세탁기’ 발명도둑잡기(118.216) 14:50 15 0
2905444 노동장관 "해 뜨면 일하고 해 지면 휴식. 야간 노동자 사망' 쿠팡 발명도둑잡기(118.216) 14:47 13 0
2905441 젤렌스키, 러시아 침공전 방어체제 이끈 '분신' 잃었다 발명도둑잡기(118.216) 14:39 17 0
2905440 회사다니면서 우울증 생겼는데.. [16] ㅇㅇ(1.244) 14:16 84 0
2905437 기분 좋은 주말이다 RyuDOG갤로그로 이동합니다. 13:47 20 0
2905436 [대한민국] 국힘 책임당원 일동 입장문 ㅇㅇ(121.172) 13:45 15 0
2905435 와 로리 슬렌더 알몸 ㅇㅅㅇ [2] 류류(121.160) 13:20 64 1
2905432 이마트가즈아 넥도리아(223.38) 12:45 15 0
2905431 나 한동훈 인간적이어서 좋아했습니다. 넥도리아(223.38) 12:41 23 0
2905430 고인모욕이 비도덕적 반인륜적인건 아는데 [1] 류류(118.235) 12:19 36 1
2905429 내년부터 4.5일제 강행이야 ㅇㅅㅇ? 류류(118.235) 12:16 18 0
2905428 내냔 상반기 ㄹㅇ 존나 바쁠거 확정임 ㅅㅂ [2] ♥멘헤라냥덩♥갤로그로 이동합니다. 12:14 56 0
2905427 ㅆㅇㅆ뒤지니까 류독이 또 나와서 나대네 ㅇㅅㅇ 류류(118.235) 12:09 27 1
2905426 이태원 피떡갈비 ㅇㅅㅇ 류류(118.235) 11:57 29 0
2905425 뭔가 있어보이는 Ada 코딩법 ㅋㅋ 나르시갤로그로 이동합니다. 11:39 25 0
2905424 책 사는거 이거 맞는건가? [2] 넥도리아(220.74) 11:38 61 0
2905420 주술회전 최신화 ♥멘헤라냥덩♥갤로그로 이동합니다. 11:04 23 0
2905419 Watsn.ai - 최첨단 AI 구라 탐지기 만들어 봤다 Watsn(47.230) 10:47 22 0
2905418 이태원 모욕죄로 벌금100 너무 분하고 억울하다.. 이딴걸로 전과라니; [3] ㅇㅇ(39.7) 10:31 52 1
2905414 오늘자 민주주의 파괴 진척 경과 현황 [5] chironpractor갤로그로 이동합니다. 09:44 47 0
2905413 저장용 ♥멘헤라냥덩♥갤로그로 이동합니다. 09:40 22 0
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

디시미디어

디시이슈

1/2