Я использую некоторый пример кода, который я нашел в сети, чтобы попытаться настроить libboost, чтобы я мог вызывать подпрограммы cpp с кодом Python.(Я собираюсь использовать python для написания своего пользовательского интерфейса и cpp для моего бэкэнда для этого приложения). Boost кажется достаточно простым в использовании, но в настоящее время он не предоставляет никаких функциональных возможностей.
#include <boost/python.hpp>
char const* greet()
{
return "hello, world";
}
BOOST_PYTHON_MODULE(hello_ext)
{
using namespace boost::python;
def("greet", greet);
}
Я компилирую это, используя строку g ++-c hello.cpp -I / usr / include / python3.6 / (последнее включение необходимо, потому что я нахожусь на Ubuntu, где g ++ неправильно находит python, и мне лень добавлять его в мой путь)
import hello_ext
print(hello_ext.greet())
Я запускаю это, используя python3, и получаю следующий вывод
File "hello.py", line 1, in <module>
import hello_ext
ModuleNotFoundError: No module named 'hello_ext'
Это означает, что Boost неправильно отображает функциональность C ++, для которой я создал модуль.Что мне здесь не хватает?Я уже пытался выставить функциональность python в заголовочном файле, а не в файле cpp, и это дает тот же результат.
Кроме того, если у любого, кто просматривает этот пост, возникают проблемы с доступом к функциональности в их модуле, но кажется, что модуль выставляется, убедитесь, что в python еще нет модуля по умолчанию с тем же именем, которое будет иметь приоритет над вашим модулем.