디시인사이드 갤러리

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

갤러리 본문 영역

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

나르시갤로그로 이동합니다. 2025.11.25 19:36:17
조회 96 추천 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 - -
2905319 출퇴근길에 소소하게 짭짤하네요 존버장군(1.233) 11.28 82 0
2905316 나 좀 찾지 말아달라고 했음 ㅇㅇ(211.234) 11.28 67 0
2905313 나 아까 실수했네 발명도둑잡기(118.216) 11.28 63 0
2905298 어제부터 저녁에 배가 안 고픔;; [6] ♥멘헤라냥덩♥갤로그로 이동합니다. 11.28 107 0
2905297 클래스 101 결제해본 사람있나 ㅇㅇ(140.248) 11.28 74 0
2905296 국비 말고 혼자 자격증 따서 취직하는것도 가능함? [1] ㅇㅇ갤로그로 이동합니다. 11.28 105 0
2905294 후 시발 이런건 15분만에 최라락 써서 뚝딱 해야하는건데 프갤러(14.52) 11.28 70 0
2905293 회원가입 겨우 완성했다. 프갤러(14.52) 11.28 70 0
2905292 <서울 자가에 대기업 다니는 김부장 이야기>관련 생각나는 글 발명도둑잡기(118.216) 11.28 138 0
2905291 맨땅에 헤딩하기에는 c가 가장 적절한듯 ㅇㅇ(118.235) 11.28 58 0
2905289 AI 로 뚝딱해서 돈 벌었다는 사람 통장 까봐. [1] 프갤러(59.16) 11.28 74 2
2905288 미디어에서 AI 로 1 분만에 뚝딱 개발했다니까 정말 그런줄 알아. 프갤러(59.16) 11.28 71 1
2905287 프로그래머가 되려면 꿈과 희망을 버려라. [3] 프갤러(59.16) 11.28 103 0
2905284 “시간이 돈을 버는 구조 만들기: 매달 ‘짭짤한 복리’ 얻는 방식” 88아재 (119.15) 11.28 52 0
2905283 <우주메리미>가 인기래서 생각나는 예전 글 발명도둑잡기(118.216) 11.28 54 0
2905282 면접문제를 만들어봤다. 프갤러(49.165) 11.28 77 0
2905281 "찬송가 부르고 주식 사"‥ 이불말이는 주가 올리는 '제물' 발명도둑잡기(118.216) 11.28 48 0
2905280 시대의 어르신들이 하나 둘 돌아가시는게 참 먹먹하구낭.. [3] ♥멘헤라냥덩♥갤로그로 이동합니다. 11.28 78 0
2905279 바지가 내려가 넥도리아(223.38) 11.28 68 0
2905278 ■si회사갈거면 포트폴리오 프론트엔드 뭘로하는게 좋냐? [9] ㅇㅇ갤로그로 이동합니다. 11.28 111 0
2905277 Ada 인생 40 년 갈아 넣었습니다. 프갤러(59.16) 11.28 56 0
2905276 착한 중국인 환영⭐+ ♥멘헤라냥덩♥갤로그로 이동합니다. 11.28 64 0
2905275 Ada 언어는 공부하면 할수록 너무 신기하다.. ㅎㅎ 나르시갤로그로 이동합니다. 11.28 62 0
2905274 나님 왤케 소중하실깡..?⭐+ [2] ♥멘헤라냥덩♥갤로그로 이동합니다. 11.28 71 0
2905272 SK네트웍스 FAMILY AI 캠프 24기 프갤러(118.235) 11.28 73 0
2905271 미국정치 갤러리 이미지, 동영상 첨부 차단 중 [1] 발명도둑잡기(118.216) 11.28 69 0
2905270 열심히 살아라 RyuDOG갤로그로 이동합니다. 11.28 65 0
2905269 오늘 기분좋네 RyuDOG갤로그로 이동합니다. 11.28 61 0
2905268 의사도 유튜버도 아니다…중고생이 꼽은 장래희망 1위 [1] 발명도둑잡기(118.216) 11.28 100 0
2905266 한화시스템 BEYOND SW 캠프 24기 프갤러(118.235) 11.28 81 0
2905263 이제 LLM딸깍으로 과제 풀기 쉬워졌으니 취업난보다 인력난이 더 대두될거 ㅇㅇ(110.10) 11.28 86 0
2905262 진짜 공대처럼 수학 물리를 빡세게 하는 것도 아니고 ㅇㅇ(110.10) 11.28 69 0
2905261 오늘의 작사 실마리: 한국에서 제일 높은 산? 발명도둑잡기(39.7) 11.28 63 0
2905260 헉교수업만 멍청하게 꼬박꼬받듣다가 취업 못 한다고 징징징 ㅇㅇ(110.10) 11.28 63 0
2905259 네트워크 프로그래밍에 네트워크 이론 ㅈ도 필요없는데 ㅇㅇ(110.10) 11.28 77 0
2905258 실시간 변화하는 컴공이라 도메인지식/신지식 경계를 잘 다뤄야하는데 ㅇㅇ(110.10) 11.28 65 0
2905257 1학년 신입질한다고 1년 날려먹고 [2] ㅇㅇ(110.10) 11.28 94 0
2905256 학교 커리만 따르는 애들 걍 순수 지능장애 같음 [1] ㅇㅇ(110.10) 11.28 90 0
2905255 모든 한국인 전자주민증, 전자운전면허증은 NSA가 훔칠 수 발명도둑잡기(118.216) 11.28 56 0
2905254 Ada: 외계인이 설계한 Storage_Pool 소개 나르시갤로그로 이동합니다. 11.28 63 1
2905253 가상화폐, 금융기관, 핀테크 해킹은 서버 씨피유 백도어 때문일지도 [1] 발명도둑잡기(118.216) 11.28 148 0
2905252 나르시시스트 특징 10가지 ㄷㄷㄷㄷ 슈퍼너드_리보갤로그로 이동합니다. 11.28 70 0
2905250 좆소 git 기가 막히네 [4] ㅇㅇ(106.101) 11.28 143 0
2905248 러스트를 접한건 우연이지만 빠는건 필연이다. [1] 프갤러(110.8) 11.28 87 0
2905246 내가 만나고 싶은 여자 이상형 적어봄.txt [1] ㅁㅁㅅ갤로그로 이동합니다. 11.28 91 0
2905242 러스트 인생 40 년 갈아 넣었습니다. 프갤러(59.16) 11.28 69 0
2905240 러스트 러스트 러스트 러스트 러스트 러스트 프갤러(221.149) 11.28 66 0
2905239 ❤✨☀⭐⚡☘⛩☃나님 시작합니당☃⛩☘⚡⭐☀✨❤ ♥멘헤라냥덩♥갤로그로 이동합니다. 11.28 69 0
2905238 내 컴터 상태가 이럴듯..ㅇㅅㅇ [2] 헤르 미온느갤로그로 이동합니다. 11.28 93 0
2905236 다들 이정도 정신문제는 가지지 않나 ㅇㅇ(39.7) 11.28 86 0
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

디시미디어

디시이슈

1/2