Как с помощью python сделать модуль для c++

273
06 октября 2017, 17:43

Как с помощью python 3.6.1 сделать модуль для c++ Тоесть написать на python какой-то модуль чет с ним сделать и запускать через c++ допустим print("Hello, world") и когда мы импортируем эту библиотеку в c++ то будет выводить Hello, world

Answer 1

Вы можете Питон-код как внешнюю команду вызвать. К примеру:

#include <stdlib.h>
int main() {
   return system("python -mwebbrowser http://example.com");
}

Чтобы выполнить Питон-код в С++, можно встроить (embed) Python-интерпретатор:

#include <Python.h>
int main()
{
  Py_Initialize();
  PyRun_SimpleString("print('hello world')");
  return Py_FinalizeEx() < 0;
}

Чтобы собрать программу, можно Makefile использовать:

NAME := embed-python-interpreter
PYTHON_VERSION := python-3.6
$(NAME): $(NAME).cc
    $(CXX) `pkg-config --cflags ${PYTHON_VERSION}` $< -o $@ `pkg-config --libs ${PYTHON_VERSION}`

Также можно встраивать Питон, используя cffi, cython.

Можно скомпилировать подмножество кода на Питоне в Си. К примеру, используя Pypy translate.py программу, которая умеет RPython в Си транслировать.

Обычно, наоборот C/C++ код используется, чтобы расширение для Питона создать или напрямую с помощью ctypes, cffi Си код вызывается из Питона. Cython удобен, чтобы интегрировать Си код с Питоном.

READ ALSO
Отличие разных комментариев, с++

Отличие разных комментариев, с++

Не подскажете в чем функциональное отличие разных видов комментариев в с++ и способы их применения?

271
Перегрузка оператора &lt; c++ [требует правки]

Перегрузка оператора < c++ [требует правки]

Здравствуйте, почему не работает перегрузка оператора < ?

274
Нахождение минора элемента матрицы

Нахождение минора элемента матрицы

Цикличная конструкция крива, не выводит миноры элементов матрицы уже после первогоТ

344
Использование класса ограничений

Использование класса ограничений

Задача заключается в проверке наличия у типа T функции определенного видаИспользуем класс ограничений

231