<BOOST_PYTHON_MODULE(name)>используется для объявления Pythonфункции инициализации модуля. Аргумент имени должен точно соответствовать имени модуля для инициализации и должен соответствовать правилам именования идентификаторов Python.. Где вы обычно пишете
extern "C" void initname()
{
...
}
Повышаю. Модули Python должны быть инициализированы
BOOST_PYTHON_MODULE(name)
{
...
}
Этот макрос генерирует две функции в области, где он используется:<extern"C"
voidinitname()>и<void
init_module_name()>, чье тело должно следовать макро-призыву.<init_name>передает<init_module_name>ручку_исключение()для безопасной обработки любых созданных исключений C++. Во время корпуса<init_name>,текущая областьотносится к модулю, инициализируемому.
Определение модуля C++:
#include <boost/python/module.hpp>
BOOST_PYTHON_MODULE(xxx)
{
throw "something bad happened"
}
Интерактивный Python:
>>> import xxx
Traceback (most recent call last):
File "", line 1, in ?
RuntimeError: Unidentifiable C++ Exception