pybid 11 로 C++실 현 된 함수 라 이브 러 리 를 봉인 하 는 방법 예시

현재 C++로 작 성 된 함수 들 이 있 습 니 다.Python 으로 호출 할 수 있 도록 pybid 11 을 통 해 Python 모듈 에 패키지 할 수 있 습 니 다.Python 프로그램 을 작성 할 때 이 모듈 을 가 져 오 면 이 함 수 를 사용 할 수 있 습 니 다.
실현 절차
  • C+함수 로 함수 기능 을 실현 합 니 다
  • 헤더 파일 을 작성 하고 함수 의 성명 을 헤더 파일 에 포함 합 니 다
  • pybid 11 패 키 징 함수 작성;
  • Python 으로 setup 스 크 립 트 를 작성 합 니 다
  • 동적 링크 라 이브 러 리 pyd 파일 생 성;
  • 테스트 함수 기능
    코드 구현
    1.C++함수 로 함수 기능 구현
    
    //   :add.cpp
    extern "C" double add(double in1, double in2) 
    { 
     return in1 + in2; 
    }
    
    
    //   :sub.cpp
    extern "C" double sub(double in1, double in2) 
    { 
     return in1 - in2; 
    }
    
    
    //   :mul.cpp
    extern "C" double mul(double in1, double in2) 
    { 
     return in1 * in2; 
    }
    
    
    //   :div.cpp
    extern "C" double div1(double in1, double in2) 
    { 
     return in1 / in2; 
    }
    2.헤더 파일 을 작성 하고 함수 의 설명 을 헤더 파일 에 포함 합 니 다.
    
    //   :functions.h
    #ifndef FUNCTIONS_H 
    #define FUNCTIONS_H 
     
    #include <iostream> 
     
    using namespace std; 
     
    extern "C" double add(double, double); 
    extern "C" double sub(double, double); 
    extern "C" double mul(double, double); 
    extern "C" double div1(double, double); 
     
    #endif
    3.pybid 11 패 키 징 함수 작성
    
    //   :functions_wrapper.cpp
    #include <pybind11/pybind11.h> 
    #include "functions.h" 
     
    namespace py = pybind11; 
     
    PYBIND11_MODULE(functions, m){ 
     m.doc() = "Simple Class"; 
     m.def("add", &add); 
     m.def("sub", &sub); 
     m.def("mul", &mul); 
     m.def("div", &div1); 
    }
    4.파 이 썬 으로 setup 스 크 립 트 작성
    
    #   :setup.py
    from setuptools import setup, Extension 
     
    functions_module = Extension( 
     name = 'functions', 
     sources = ['add.cpp', 'sub.cpp', 'mul.cpp', 'div.cpp', 'functions_wrapper.cpp'], 
     include_dirs = [r'D:\software\pybind11-master\include', 
         r'D:\software\Anaconda\include'] 
    ) 
     
    setup(ext_modules = [functions_module])
    5.동적 링크 라 이브 러 리 pyd 파일 생 성
    명령 행 에서 실행 합 니 다python setup.py build_ext --inplace현재 경로 에서 pyd 동적 라 이브 러 리 를 생 성 합 니 다.


    6.테스트 함수 기능
    
    #   :test.py
    import functions 
     
    print(functions.add(0.9, 3)) 
    print(functions.sub(0.9, 3)) 
    print(functions.mul(0.9, 3)) 
    print(functions.div(0.9, 3))
    output:
    3.9
    -2.1
    2.7
    0.3
    이 글 은 pybid 11 로 C++실 현 된 함수 라 이브 러 리 를 봉인 하 는 방법 에 관 한 글 입 니 다.더 많은 관련 pybid 11 패키지 C+실 현 된 함수 라 이브 러 리 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 많은 지원 바 랍 니 다!

    좋은 웹페이지 즐겨찾기