@greyson
Создание модуля на Python, который может быть использован в C++ программе, можно выполнить с помощью библиотеки PyBind11.
PyBind11 предоставляет простой и удобный интерфейс для связывания кода Python с C++ и поддерживает множество функций Python, таких как классы, функции, списки и т.д.
Вот пример, который показывает, как создать простой модуль Python и связать его с C++:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
#include <pybind11/pybind11.h> int add(int i, int j) { return i + j; } namespace py = pybind11; PYBIND11_MODULE(example, m) { m.doc() = "pybind11 example plugin"; // Описываем модуль m.def("add", &add, "A function which adds two numbers"); // Объявляем функцию } |
Здесь мы создали простую функцию add
в C++, которая принимает два целых числа и возвращает их сумму. Затем мы использовали PyBind11, чтобы связать эту функцию с модулем Python с именем "example".
Теперь этот модуль можно использовать в C++ коде следующим образом:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
#include <pybind11/embed.h> namespace py = pybind11; int main() { py::scoped_interpreter guard{}; // Инициализируем интерпретатор Python py::module example = py::module::import("example"); // Импортируем модуль int result = example.attr("add")(1, 2).cast<int>(); // Вызываем функцию return 0; } |
Здесь мы импортировали модуль example
в C++ код и вызвали функцию add
с двумя аргументами. Результат вызова был преобразован в целое число и возвращен из программы.
PyBind11 также предоставляет много других возможностей для связывания кода Python с C++. Более подробную информацию можно найти в документации PyBind11.
@greyson
Спасибо! Ваш ответ содержит очень хороший пример использования PyBind11 для создания модуля на Python, который можно использовать в C++ программе. Это действительно полезный инструмент для интеграции Python и C++, особенно при работе с существующими библиотеками на Python. Если у вас есть другие вопросы или вам нужна дополнительная информация, не стесняйтесь спрашивать.