Здесь же следует сделать Еще одно замечание:программа,встраивающаяpython,не должна много раз выполнять py_initialize() и py_finalize(),так как это может 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Здесь же следует сделать Еще одно замечание:программа,встраивающаяpython,не должна много раз выполнять py_initialize() и py_finalize(),так как это может

Поиск

Здесь же следует сделать еще одно замечание:программа,встраивающаяPython,не должна много раз выполнять Py_Initialize() и Py_Finalize(),так как это может

 

приводить к утечке памяти.Сам же интерпретаторPythonочень стабилен и в большинстве случаев не дает утечек памяти.

 

Использование SWIG

 

SWIG(Simplified Wrapper and Interface Generator,упрощенный упаковщик и генератор интерфейсов) -это программное средства,сильно упрощающее(во многих случаях-автоматизирующее)использование библиотек,написанных наCиC++,а также на других языках программирования,в том числе(не в последнюю очередь!)наPython.Нужно отметить,чтоSWIGобеспечивает достаточно полную поддержку практически всех возможностейC++,включая предобработку,классы,указатели,наследование и даже шаблоныC++.Последнее очень важно,если необходимо создать интерфейс к библиотеке шаблонов.

 

ПользоватьсяSWIGдостаточно просто,если уметь применять компилятор и компоновщик(что в любом случае требуется при программировании на C/C++).

 


Простой пример использования SWIG

 

Предположим,что есть программа наC,реализующая некоторую функцию(пусть это будет вычисление частоты появления различных символов в строке):

 

/* File : freq.c */ #include <stdlib.h>

int * frequency(char s[]) { int *freq;

char *ptr;

freq = (int*)(calloc(256, sizeof(int))); if (freq != NULL)

 

for (ptr = s; *ptr; ptr++) freq[*ptr] += 1;

 

return freq;

}

 

Для того чтобы можно было воспользоваться этой функцией изPython,нужно написать интерфейсный файл(расширение.i)примерно следующего содержания:

 



Поделиться:


Последнее изменение этой страницы: 2024-06-27; просмотров: 95; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 216.73.217.128 (0.007 с.)