Найти в Дзене

Python + C/C++

Оглавление
1) Установка компонентов
2) Добавление gcc в переменную среды Windows 
3) Написание Си программы
4) Компиляция
5) Запуск
6) Устранение ошибок

Данная статья представляет собой инструкцию по установке и запуска библиотек созданных на языках C или C++, и запускаемых с помощью Python для его ускорения.

Установка компонентов

Рассмотрим создание первой простейшей программы на языке Си с помощью компилятора GCC, который на сегодняшний день является одим из наиболее популярных компиляторов для Cи и который доступен для разных платформ. Более подобному информацию о GCC можно получить на официальном сайте проекта https://gcc.gnu.org/.

Набор компиляторов GCC распространяется в различных версиях. Для Windows одной из наиболее популярных версий является пакет средств для разработки от некоммерческого проекта MSYS2. Следует отметить, что для MSYS2 требуется 64-битная версия Windows 7 и выше (то есть Vista, XP и более ранние версии не подходят)

Итак, загрузим программу установки MSYS2 по следующей ссылке: https://github.com/msys2/msys2-installer/releases/download/2022-10-28/msys2-x86_64-20221028.exe

1. Запускаем программу MSYS2

2. На первом шаге установки будет предложено установить каталог для установки. По умолчанию это каталог C:\msys64:

-2

3. Оставим каталог установки по умолчанию (при желании можно изменить). На следующем шаге устанавливаются настройки для ярлыка для меню Пуск, и затем собственно будет произведена установка. После завершения установки нам отобразить финальное окно, в котором нажмем на кнопку Завершить.

-3

4. После завершения установки запустится консольное приложение MSYS2.exe. Если по каким-то причинам оно не запустилось, то в папке установки C:/msys64 надо найти файл usrt_64.exe:

-4

5. Теперь нам надо установить собственно набор компиляторов GCC. Для этого введем в этом приложении следующую команду:

  • Для 64-битной системы:

pacman -S mingw-w64-ucrt-x86_64-gcc

  • Для 32-битной системы:

pacman -S mingw-w64-i686-gcc

Внимание!!! Перед тем как устанавливать проверьте разрядность Python компилятора которая у вас установлена. Так как, если у вас win32, необходимо ввести команду для 32-битной системы.

Для управления пакетами MSYS2 использует пакетный менеджер Packman. И данная команда говорит пакетному менеджеру packman установить пакет mingw-w64-i686-gcc (или mingw-w64-ucrt-x86_64-gcc), который представляет набор компиляторов GCC (название устанавливаемого пакета указывается после параметра -S).

-5

6. После завершения установки мы можем приступать к программированию на языке Си. Если мы откроем каталог установки и зайдем в нем в папку C:\msys64\mingw32\bin (если исполнена команда для 64-битной, путь: C:\msys64\ucrt64\bin), то найдем там все необходимые файлы компиляторов:

-6

Добавление gcc в переменную среды Windows

Для упрощения запуска компилятора мы можем добавить путь к нему в Переменные среды.

1. Для этого можно в окне поиска в Windows ввести "изменение переменных среды текущего пользователя":

-7

2. Нам откроется окно Переменных среды:

-8

3. И добавим путь к компилятору (если 64-битная система: C:\msys64\ucrt64\bin):

-9

4. Чтобы убедиться, что набор компиляторов GCC успешно установлен, введем следующую команду:

gcc --version

-10

Написание Си программы

В любом из редакторов можно составить небольшую тестовую программу для проверти работоспособности. Напишем программу для вывода в консоль надпись "Hello World".

1. Запустим любой из редакторов, создадим файл lib.c и теперь определим в этом файле простейший код, который будет выводить строку на консоль:

-11

#include <stdio.h>
int main()
{
    printf("hello world\n");
    // system("pause");
    return 0;
}

Внимание!!! Закомментированная строка system("pause"), предназначена для исполняемых программ. Если же вы создаете исполняемый файл необходимо ее раскомментировать и запустить компиляцию.

Компиляция

Исполняемый файл:

Теперь у нас есть несколько вариантов компиляции. Если же мы хотим получить исполняемую программу в виде .exe файла, то в командную строку введем команду:

gcc lib.c -o lib

-12

И получаем скомпилированный исполняемый файл:

-13

Библиотека:

Для создания библиотеки, необходимо ввести команду:

gcc -shared -o lib.so -fPIC lib.c

Важно!!! Компилятор gcc так же может создавать .dll библиотеки, но в данной случае рекомендуется использовать .so, так как данная библиотека будет так же поддерживаться и на Linux платформах.

-14

Получаем в конце скомпилированную библиотеку so:

-15

Запуск

1. Для проверки работоспособности обычного исполняемого файла, кликаем на него два раза и получаем результат.

-16

2. Для проверки работоспособности скомпилированной библиотеки классов, необходимо написать код на Python и подключить непосредственно через встроенную библиотеку ctypes.

Напишем небольшой код на Python:

-17

Теперь проверяем запустив программу:

-18

Как видим Python успешно подключил библиотеку написанную на языке Си, и вызвал функцию main.

Устранение ошибок

1. Первая из возможных ошибок, это ошибка:

OSError: [WinError 193] %1 не является допустимым приложением Win32

Объяснение: Эта ошибка сама по себе довольно серьезная, но легко решаемая. Она появляется в том случае если вы используете Python разрядности x32, а gcc установили разрядностью x64. Такая разница в разрядностях дает ошибку.

Решение: Вам необходимо вернуться в главу "Установка компонентов", пункт 5. Там непосредственно написано, что необходимо узнать разрядность Python установленного на компьютере, и ввести необходимые команды для каждой из этих разрядностей.

Наука
7 млн интересуются