Как вызвать функцию в Python из C++?

191
16 декабря 2021, 05:30

Есть код:

#include <iostream>
using namespace std;
void hello() {
    cout << "Hello!" << endl;
}

Как из Python вызвать это функцию?

Answer 1

Если вам нужно выполнить какой-то код на С++, можно написать на С++ отдельную программу, скомпилировать её и вызвать из python-скрипта как отдельный процесс. При этом передавать аргументы в неё можно можно через argv или через файлы. Возвращать значения можно через stdout или через файлы.

Пример.

#include <iostream>
void hello(std::string name) {
    std::cout << "Hello, " << name << std::endl;
}
int main(int argc, char* argv[]) {
    hello(argv[1]);
}

Компилируем программу в ConsoleApplication.exe. В python запускаем её, передавая один аргумент, и получаем вывод этой программы в stdout.

p = subprocess.run(["./ConsoleApplication.exe", 'Bob'], capture_output=True)
output = str(p.stdout, 'utf8')
print(output)  # Hello, Bob
READ ALSO
Почему виснет консоль в QT CREATOR на std::cin?

Почему виснет консоль в QT CREATOR на std::cin?

На cppsh работает, но в qt creator почему то нет

171
Какая разница между i++ и ++i?

Какая разница между i++ и ++i?

Какая разница между i++ и ++i?

173
Visual C++ 2008. Не удается открыть файл include: chrono / thread

Visual C++ 2008. Не удается открыть файл include: chrono / thread

Работаю в Visual Studio 2008 C++Для проекта нужны две библиотеки chrono и thread

156