swig-python 의 C++인터페이스
swig 는 다양한 고급 언어(예 를 들 어 python,R,Java 등)가 C/C++에 대한 사용 을 실현 하고 변환 인 터 페 이 스 를 제공 할 수 있 습 니 다.여 기 는 프로젝트 의 수요 로 인해 Python 이 C++에 대한 지원 을 소개 합 니 다.(본 고 는 다른 네트워크 글 을 참고 하지만 코드 는 모두 검증 을 거 쳐 가능 합 니 다)
SWIG 설치(ubuntu 14.04):
설치 완료
간단히 사용 하 다
int fact(int n);
원본 파일 example.cpp:
#include "example.h"
int fact(int n){
if(n<0){
return 0;
}
if(n==0){
return 1;
}
else{
return (1+n)*fact(n-1);
}
}
%module example
%{
#define SWIG_FILE_WITH_INIT
#include "example.h"
%}
int fact(int n);
명령 을 실행 하면 두 개의 다른 파일 이 생 성 됩 니 다:examplewrap.cxx 와 example.py.
"""
setup.py
"""
from distutils.core import setup, Extension
example_module = Extension('_example',
sources=['example_wrap.cxx','example.cpp'],
)
setup (name='example',
version='0.1',
author="SWIG Docs",
description="""Simple swig example from docs""",
ext_modules=[example_module],
py_modules=["example"],
)
메모:헤더 파일 과 원본 파일 이 모두 example.*이면 setup.py 스 크 립 트 의 Extension 인 자 는""이 어야 합 니 다.example"
>>>import example
>>>example.fact(4)
24
>>>
*7.STL 지원
*7.1. vector
%module example
%{
#define SWIG_FILE_WITH_INIT
#include "example.h"
%}
%include stl.i
namespace std{
%template(VectorOfString) vector;
}
int fact(int n);
std::vector<:string> getname(int n);
*7.2. vector >
%module example
%{
#define SWIG_FILE_WITH_INIT
#include "example.h"
%}
%include stl.i
namespace std{
%template(stringvector) vector;
%template(stringmat) vector >;
}
int fact(int n);
std::vector<:vector> > getname(int n);
*7.3.vector>2 차원 vector(다 차원 vector 정의+struct)
%module example
%{
#define SWIG_FILE_WITH_INIT
#include "example.h"
%}
%include stl.i
struct point
{
int i;
int j;
};
namespace std{
%template(stringvector) std::vector;
%template(stringmat) std::vector<:vector> >;
}
std::vector<:vector> > getname(int n);
/*
namespace std , vector vector , , , , namespace std :
namespace std{
%template(stringvector) std::vector;
%template(stringmat) std::vector<:vector> >;
}
, , , , std::vector , std::vector , , , .
*/
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.