>  기사  >  백엔드 개발  >  개발을 위해 Python을 C/C++에 포함시키는 방법

개발을 위해 Python을 C/C++에 포함시키는 방법

大家讲道理
大家讲道理원래의
2016-11-07 11:29:171463검색

C/C++에 Python을 포함시키려면 비교적 간단합니다. VC에 Python의 포함 파일 디렉터리와 lib 파일 디렉터리를 추가하면 됩니다. Python을 C/C++에 삽입하는 방법을 살펴보겠습니다.

VC6.0에서 도구->옵션->디렉터리->디렉터리 표시를 열고 Python 설치 디렉터리의 포함 디렉터리를 포함 파일 항목에 추가하고 libs 디렉터리를 라이브러리 파일 항목에 추가합니다. .

VC2005에서 도구->옵션->프로젝트 및 솔루션->VC++ 디렉토리를 열고 동일한 작업을 수행합니다.

코드는 다음과 같습니다.

디버그 실행 시 "python31_d.lib 파일을 찾을 수 없습니다"라는 오류가 발생했습니다. 원인은 나중에 밝혀졌습니다. python31_d.lib 파일이 있어야 합니다. 디버그 시 생성되고, 그렇지 않으면 릴리스에서만 생성 가능

#include <python.h> 
int main()  
{  
Py_Initialize();  
PyRun_SimpleString("Print &#39;hi, python!&#39;");  
Py_Finalize();  
return 0;  
}

Py_Initialize 함수 프로토타입은 다음과 같습니다: void Py_Initialize()

필수 C/C++에 Python을 포함할 때 이 함수를 사용하면 Python 인터프리터를 초기화하며 다른 Python/C API를 사용하기 전에 호출해야 합니다. Py_IsInitialized 함수를 사용하여 초기화가 성공했는지 확인하고 성공하면 True를 반환할 수 있습니다.

PyRun_SimpleString 함수의 프로토타입은 Python 코드 조각을 실행하는 데 사용되는 int PyRun_SimpleString(const char *command)입니다.

참고: 문 사이에 들여쓰기를 유지해야 합니까?

Py_Finalize 함수의 프로토타입은 Python 인터프리터를 닫고 인터프리터가 점유한 리소스를 해제하는 데 사용되는 void Py_Finalize()입니다.

PyRun_SimpleFile 함수는 ".py" 스크립트 파일을 실행하는 데 사용할 수 있습니다. 함수 프로토타입은 다음과 같습니다:

int PyRun_SimpleFile(FILE *fp, const char *filename);

여기서 fp는 열린 파일 포인터이고 filename은 실행할 Python 스크립트 파일의 이름입니다. 그러나 이 함수의 공식 릴리스는 Visual Studio 2003.NET에서 컴파일되므로 다른 버전의 컴파일러를 사용하는 경우 버전 문제로 인해 FILE 정의에서 충돌이 발생할 수 있습니다. 동시에 단순화를 위해 다음 방법을 사용하여 이 함수를 대체할 수 있습니다:

PyRun_SimpleString("execfile('file.py')") //execfile을 사용하여 Python 파일 실행

Py_BuildValue( )는 Python에서 숫자와 문자열을 해당 데이터 유형으로 변환하는 데 사용됩니다(C 언어에서는 모든 Python 유형이 PyObject 유형으로 선언됩니다). 함수 프로토타입은 다음과 같습니다.

PyObject *Py_BuildValue (const char *format, …..);

PyString_String()은 PyObject* 유형 변수를 C 언어에서 처리할 수 있는 char* 유형으로 변환하는 데 사용됩니다. 구체적인 프로토타입은 다음과 같습니다.

char * PyString_String(PyObject *p);

위 내용은 Python을 C/C++에 삽입하는 방법에 대한 소개입니다. 궁금한 사항이 있으면 아래에 메시지를 남겨주세요.

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.