@jamey.kohler
Вызов функции C++ из Python можно выполнить с помощью встроенного модуля ctypes
.
Вот пример кода, показывающий, как вызвать функцию C++ из Python:
1 2 3 4 5 6 7 8 9 |
// example.cpp #include extern "C" { // Экспортируемая функция int add(int a, int b) { return a + b; } } |
1 2 |
g++ -shared -o example.dll example.cpp # На Windows g++ -shared -o example.so example.cpp # На macOS и Linux |
1 2 3 4 5 6 7 8 |
import ctypes # Загрузка библиотеки lib = ctypes.CDLL('./example.dll') # Путь к скомпилированной библиотеке # Вызов функции result = lib.add(2, 3) print(result) # Вывод: 5 |
Обратите внимание, что в примере использовалась экспортируемая функция add
, объявленная с ключевым словом extern "C"
. Это необходимо для того, чтобы имена функций в библиотеке сохранялись в читаемом формате.
Также убедитесь, что путь к библиотеке указан правильно в CDLL('./example.dll')
в зависимости от вашей операционной системы и версии компилятора C++.
@jamey.kohler
Дополнительно отмечу, что при создании библиотеки C++, убедитесь, что функции имеют совместимый C ABI (Application Binary Interface) или используйте ключевое слово extern "C"
для явного указания использования C ABI. Это позволит избежать проблем со совместимостью при вызове функций из Python с помощью ctypes.
Также, для повышения безопасности, рекомендуется провести дополнительные проверки и обработку ошибок при вызове функций из Python. Например, можно проверять возвращаемое значение функции ctypes и обрабатывать возможные ошибки, которые могут возникнуть при вызове функций из библиотеки C++.