Рубрики
Uncategorized

C++ Разработка модуля расширения версии Python для Windows Пример

Автор оригинала: David Wong.

C++ Разработка модуля расширения версии Python для Windows Пример Введения и подготовки тестовой среды Тестовая среда: Операционная система: Windows 10 Версия Python: 3.7.0 Версия VS: Версия сообщества Vs2015 (бесплатно) Скачать соответствующие инструменты: Версия VS vs2015 Версия сообщества (бесплатно) Win10SDK (Установка vs2015 необязательна, если установка отсутствует, ее необходимо установить самостоятельно) Установочный файл Python 3.7.0 Win32 http://ffmpeg.club/python В этом примере VS не используется для редактирования, но для этого необходимо установить среду компиляции vs, и напрямую используйте дистрибутивы python для компиляции и установки. Обратите внимание, что установленный здесь Python 32-разрядный, поэтому скомпилированная библиотека также является 32-разрядной программой. Во-первых, нам нужно проверить, есть ли в системе другие версии Python, чтобы предотвратить конфликты. Введите командную строку python import sys print(sys.путь)

Проверьте, является ли текущий системный путь правильным или нет, и если это версия другого пути, это может повлиять на разработку расширенных библиотек. Основная проблема заключается в несоответствии библиотечных файлов, заголовочных файлов и DLL-файлов. 1 файл заголовка и файл библиотеки Сначала создайте файл mymod. C чтобы добавить ссылку на файл заголовка к файлу, на который ссылается файл заголовка # include “Python. h”, файл библиотеки указывать не нужно, а путь к файлу заголовка-это путь установки в python.

2 Определите модульные функции Параметр функции self-это сам модуль, а args-список параметров, передаваемый python. Возвращаемое значение определяет целое число 0. Здесь пространство приложения добавляется к количеству ссылок, которым управляет python. Вы также можете вернуть значение NULL здесь, и python получит исключение.

///Модульная функция статический PyObject testmod(PyObject self,PyObject*args) { //Возвращает длинную форму python. На языке Си указывается значение count + 1, а возвращаемое значение освобождается python. вернуть PyLong_FromLong(0); } 3 Объявите функции модуля (открытые для python) Первое имя функции, открытое для python, не обязательно совпадает с именем функции на языке Си, но оно максимально согласовано, чтобы облегчить последующий код. Второй-указатель функции, тип по умолчанию-тип указателя функции PyCFunction, который является типом функции выше. Третий параметр-это тип параметра функции, открытый для python. Здесь мы задаем АРГУМЕНТЫ METHOD_NO без параметров. Мы также можем задать несколько параметров METH_VARARGS. Также можно задать параметр ключевого значения METH_KEYWORDS. Чтобы установить METH_KEYWORDS, мы должны установить MATH_KEYWORDS | METH_VARARGS вместе с METH_VARARGS, и функция модуля добавит словарь параметров в

7 Тест вызова расширенной библиотеки После компиляции и использования библиотеки расширений мы пишем код Python для его тестирования.

Таким образом, мы завершили нашу первую программу библиотеки расширений Python.