디시인사이드 갤러리

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

갤러리 본문 영역

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

나르시갤로그로 이동합니다. 2025.11.25 19:36:17
조회 130 추천 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/15 - -
AD AI 가전 디지털 모음전 운영자 25/11/27 - -
2907562 구형 하드디스크 소리 흉내내는 장치, 소프트웨어 발명도둑잡기(118.216) 12.11 57 0
2907561 Steve Ballmer Developers Music Video 발명도둑잡기(118.216) 12.11 40 0
2907560 지하철인데 존예녀 한 명 있더라? 번호딸까? [1] ㅁㅁㅅ갤로그로 이동합니다. 12.11 115 0
2907557 와 깜짝놀랬다. [1] 프갤러(49.165) 12.11 78 0
2907556 조국혁신당이 미래임 조국이 대통령이고 타이밍뒷.통수한방(1.213) 12.11 63 1
2907555 jsp 쓸바엔 러스트 테라 쓰지 [1] 프갤러(27.171) 12.11 101 0
2907554 넥스트 볼수록 드는 생각이 이짓할꺼면 jsp쓰지 ㅇㅇ(182.228) 12.11 65 0
2907553 틈만나면 해킹으로 털리는시대에 간철수가 한마디한적을 본적이없음 타이밍뒷.통수한방(1.213) 12.11 56 0
2907551 좋은 보고는 윗사람이 궁금하지 않게 중간중간 보고하는거야 ㅇ ㅅㅇ [2] 프갤러(60.196) 12.11 114 0
2907549 학교다닐때 이런 괴롭힘 당한적 있는데 나뿐임? [2] ㅁㅁㅅ갤로그로 이동합니다. 12.11 113 0
2907548 프로그래머는 언제 AI로 대체 돼? [2] 프갤러(223.39) 12.11 162 0
2907547 자러감.. ㅇㅅㅇ [2] 헤르 미온느갤로그로 이동합니다. 12.11 64 0
2907546 오늘 아침 퇴근길 ㅇㅅㅇ [3] 헤르 미온느갤로그로 이동합니다. 12.11 96 0
2907545 태연 ㅇㅅㅇ [1] 헤르 미온느갤로그로 이동합니다. 12.11 66 0
2907544 하루 한 번 헤르미온느 찬양 [1] 헤르 미온느갤로그로 이동합니다. 12.11 100 0
2907543 본인 프론트 고민중이다 [1] 프갤러(121.129) 12.11 85 0
2907542 ai한테 쿼리 검수 맡겼더니 ㅇ ㅅㅇ 프갤러(60.196) 12.11 69 0
2907541 회사 어플만들려는데 이런거 외주맡기면 얼마듬?? [5] ㅇㅇ갤로그로 이동합니다. 12.11 119 0
2907540 ❤✨☀⭐⚡☘⛩☃나님 시작합니당☃⛩☘⚡⭐☀✨❤ [2] ♥발라당냥덩♥갤로그로 이동합니다. 12.11 97 0
2907538 메타 웃긴점 [1] 겸손의신(175.196) 12.11 95 0
2907537 인공지능 및 기계 학습의 부트스트래핑 발명도둑잡기(118.216) 12.11 47 0
2907535 요새 조용한 보안전문가 출신 정치인 발명도둑잡기(118.216) 12.11 78 0
2907534 초딩철수새끼는 요즘같이 해킹터질때 최고정보보안가가 입닥치고사누??? [3] 타이밍뒷.통수한방(1.213) 12.11 120 0
2907532 Sudo 라이센스가 특이하다 발명도둑잡기(118.216) 12.11 63 0
2907531 안철수 빌게이츠 ) 자칭 최고의 프러그래머 타이밍뒷.통수한방(1.213) 12.11 88 0
2907530 “‘글값’이 세상을 바꿀 수 있다”던 얼룩소의 실험은 왜 실패했나. 발명도둑잡기(118.216) 12.11 63 0
2907528 좇센이 좇같은건 윗대가리범죄자들도 좇같지만 타이밍뒷.통수한방(1.213) 12.11 67 0
2907527 2040년 한국 잠재성장률 0%대... 금융의 자원 재배분이 관건 발명도둑잡기(118.216) 12.11 61 0
2907526 쿠팡 ‘진짜 사장’ 김범석, 그가 진짜로 두려워하는 것 발명도둑잡기(118.216) 12.11 61 0
2907525 관광객 SNS도 보겠다는 미국.."5년치 내라" 발명도둑잡기(118.216) 12.11 64 0
2907524 쿠팡 새벽배송 직접 뛴 기자…300층 오르내리기, 머리 찧는 통증이 왔다 발명도둑잡기(118.216) 12.11 54 0
2907522 광장시장 바가지 논란에 월세, 자릿세, 젠트리피케이숀 분석이 빠졌다 발명도둑잡기(118.216) 12.11 50 0
2907521 "대만 침공한 중국군에 미군 매번 진다"-NYT 발명도둑잡기(118.216) 12.11 61 0
2907520 네트워크 엔지니어 vs 서버 엔지니어 vs 사기업 전산 프갤러(175.223) 12.11 72 0
2907519 리트윗 한걸로 국가보안법 기소당한 박정근 사건 발명도둑잡기(118.216) 12.11 50 0
2907518 이렇게 생긴 슬렌더 차도녀 프론트 개발자한테 고백하고싶다 ㅇㅇ(125.190) 12.11 102 0
2907515 미국에 대한민국 정부 혼내달라고 로비한 쿠팡 발명도둑잡기(118.216) 12.10 81 0
2907514 애미,애비말 말고 gpt말 들었으면 프갤러(175.196) 12.10 66 0
2907513 팬이란게 존나 웃기지 않냐? 프갤러(175.196) 12.10 55 0
2907512 개발자 말고 애퍼 어떻냐? [2] 헬마스터갤로그로 이동합니다. 12.10 113 0
2907511 마취 없는 절단→임산부 실험…인간 생체실험 고발 '731' 개봉 발명도둑잡기(118.216) 12.10 51 0
2907509 “수용소에 가둬 폭파해 죽인다” 한국판 홀로코스트? 발명도둑잡기(118.216) 12.10 55 0
2907507 [국가보안법을 박물관으로] 말의 세계에 감금된 것들 전시회 해설 영상 발명도둑잡기(118.216) 12.10 56 0
2907505 [풀영상] 심리스릴러 다큐멘터리 게임의 전환 발명도둑잡기(118.216) 12.10 41 0
2907503 [기획영상] 당신들 여태 뭘한거요? 발명도둑잡기(118.216) 12.10 48 0
2907502 SEJEONG(세정) _ Tunnel(터널) 발명도둑잡기(118.216) 12.10 43 0
2907501 中 민간 드론, 타이완 진먼섬 침투해 전단 살포 / YTN 발명도둑잡기(118.216) 12.10 50 0
2907499 문성근 "'블랙리스트' 가장 큰 피해자는 배우 김민선" / YTN 발명도둑잡기(118.216) 12.10 51 0
2907498 '문성근-김여진 합성사진' 재판... "참담하다" 국정원 직원의 눈물 발명도둑잡기(118.216) 12.10 53 0
2907497 국정원 블랙리스트에 '찍힌 연예인' 집단 소송 움직임 발명도둑잡기(118.216) 12.10 91 0
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

디시미디어

디시이슈

1/2