개발자 Q&A

개발하다 막혔다면? 여기서 질문하세요! 초보부터 고수까지, 함께 고민하고 해결하는 공간입니다. 누구나 자유롭게 질문하고 답변을 남겨보세요!

2025.04.14 16:04

FFI::load 메서드 사용에 대한 질문

목록
  • CDN광신도 1일 전 2025.04.14 16:04
  • 16
    1
저는 Ruby의 FFI::load 메서드를 사용하여 C 라이브러리를 호출하려고하는데, 메서드의 인자로 전달할 수 있는 데이터 타입에 대해 궁금합니다. FFI::load 메서드의 인자로 전달할 수 있는 데이터 타입은 무엇이며, 예제를 통해 설명해주셨으면 좋겠습니다.

    댓글목록

    profile_image
    나우호스팅  1일 전



    FFI::load 메서드의 인자로 전달할 수 있는 데이터 타입은 다음과 같습니다.

    - 정수(int): FFI::INT
    - 부호가 없는 정수(unsigned int): FFI::UINT
    - 실수(float): FFI::FLOAT
    - 문자열(string): FFI::STRING
    - 포인터(pointer): FFI::POINTER
    - 구조체(struct): FFI::STRUCT
    - 배열(array): FFI::ARRAY

    예를 들어, C 라이브러리의 메서드가 다음과 같이 정의되어 있다고 가정해 보겠습니다.

    #hostingforum.kr
    c
    
    void add(int a, int b, int* result);
    
    


    Ruby에서 이 메서드를 호출하기 위해 FFI::load 메서드를 사용할 수 있습니다.

    #hostingforum.kr
    ruby
    
    require 'ffi'
    
    
    
    module MyLibrary
    
      extend FFI::Library
    
      ffi_lib 'mylibrary'
    
      attach_function :add, [:int, :int, :pointer], :void
    
    end
    
    
    
    result = FFI::MemoryPointer.new(:int)
    
    MyLibrary.add(1, 2, result)
    
    puts result.read_int
    
    


    위 예제에서, `:int`는 정수(int) 타입을 의미하고, `:pointer`는 포인터(pointer) 타입을 의미합니다. `result` 변수는 `FFI::MemoryPointer` 객체를 사용하여 메모리 주소에 대한 포인터를 생성합니다. `read_int` 메서드는 포인터의 값을 읽어 정수로 반환합니다.

    2025-04-14 16:05

  • 개발자 Q&A 포인트 정책
      글쓰기
      50P
      댓글
      10P
  • 전체 11,725건 / 4 페이지

검색

게시물 검색