Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Проблема с boost.python


Автор: feeling 23.4.2009, 21:09
Я создаю пустой dll проект, в котором описываю два класса и функции к ним.
Затем - 
Код

BOOST_PYTHON_MODULE(module_py_dll)
{
    class_<Data>("Data");
    class_<Process>("Process")
        .def("set_Time", &Process::set_Time)
        .def("set_Mask", &Process::set_Mask)
        .def("Open", &Process::Open)
        .def("Start", &Process::Start);
}

При компиляции требует - boost_python-vc90-mt-gd-1_38.lib и python25.lib, и я ему это даю.
И всё замечательно компилиться в module_py_dll.pyd.
В питоне при попытке импортировать module_py_dll.pyd, приложение начинает требовать python26.dll (хотя у меня стоит python 2.5.4).

Подскажите в чём может быть причина!
Boost устанавливал при помощи BoostPro, который коннектится куда нужно и устанавливает нужные бинарники.

P.S.
При попытке подсунуть питоновскому приложению python26.dll или python25.dll вылетает с ошибкой - Fatal Python error: Interpreter not initialized (version mismatch?)

Автор: Lazin 23.4.2009, 22:39
Цитата(feeling @  23.4.2009,  21:09 Найти цитируемый пост)
Boost устанавливал при помощи BoostPro, который коннектится куда нужно и устанавливает нужные бинарники.

видимо он установил не те бинарники)
попробуйте самостоятельно собрать boost, с нужной версией python, либо установите python 2.6 smile 

Автор: feeling 24.4.2009, 01:56
А boost имеет какие-то поддерживаемые версиипитона?
У меня boost 1.38 - может он поддерживает толбко питон 2.6 и выше?
Есть где-нибудь такая информация? Я не смог найти.

Автор: Lazin 24.4.2009, 08:11
поддерживаются все версии, начиная с 2.2, в документации об этом и о том, как собрать boost.python для определенной версии python подробно написано:
http://www.boost.org/doc/libs/1_38_0/libs/python/doc/building.html

Добавлено через 3 минуты и 34 секунды
у меня установлен python 2.5, сборка boost-python лишних телодвижения не потребовала, запустил bjam, обнаружил в папке lib библиотеки boost_python-vs80***

Автор: feeling 24.4.2009, 16:58
Но в чём причина того, что при компиляции требуется python25.lib, а при использовании - python26.dll?

Автор: feeling 24.4.2009, 17:57
Спасибо за советы.
Проблема решена установкой boost 1.35 - самая старая версия с поддержкой vc++9.0
Всё замечательно работает и не требует питоновских dll.
Скорее всего boost 1.38 питает большую любвь к питону 2.6(по умолчанию) если устанавливать его  со скомпиленными бинарниками.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)