Расширение для Питона — динамическая библиотека. Весь функционал МоБи выполнен в виде расширения с помощью boost.python и подключается вызовом «from pyfbsdk import *»

В МоБи функционал Питона выведен с помощью boost python.
http://www.boost.org/doc/libs/1_43_0/libs/python/doc/index.html

При этом Питон следует установить python 2.6.1 2008 года
http://www.python.org/download/releases/2.6.1/

Последовательность действий следующая:

  1. установить питон 2.6.1
  2. собрать boost python библиотеку и желательно dll *1. Полученная библиотека будет иметь зависимость от версии вашего компилятора и профиля (отладка, релиз), поэтому её необходимо будет скопировать в корневую директорию МоБи, туда где имеется исполняемый файл.
  3. вместе в boost python идут примеры на питоне, я для начала взял файл getting_started1.cpp
  4. Начал новый проект win32 dynamic library, для компиляции подключил пути к питону и бусту.
  5. полученной библиотеке нужно сменить расширение на *.pyd и скопировать в папку MotionBuilder 2010\bin\win32\python\lib\plat-win\DLLs\
  6. Свою библиотеку я назвал python_ext, при этом поменяв идентификатор в вызове BOOST_PYTHON_MODULE перед компиляцией. ? запустив МоБи, успешно выполнился тестовый вызов функции на питоне:

from python_ext import *
print greet()

*1 — сборку делал через bjam, опции управляются посредством командной строки

    -j2 — задействовать два ядра, с целью увеличения скорости компиляции
    —toolset=msvc-8.0 — инструмент с помощью которого собирать boost (gcc, msvc-8.0, msvc-9.0)
    release debug — без коментариев
    —without-math — не собирать Boost.Math
    —without-graph — не собирать Boost.Graph
    —without-python — не собирать Boost.Python
    threading=multi link=static link=shared runtime-link=static runtime-link=shared — настраиваем сборку, думаю тут все понятно
    stage — директория, в торорую будут помещены статические и динамические библиотеки

Расширение питона для МоБи 2010
Метки:        

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *