предоставлять функции C ++ в python и встраивать python в C ++

В моем приложении есть несколько событий, каждое событие может иметь несколько действий. Эти действия реализованы на C ++. Я хочу предоставить эти основные функции python и использовать python для написания действия. Преимущество в том, что я могу изменять действия без перекомпиляции. Например:

CppClass o;

// --- this is a action----
o.f1();
o.f2();
// ------------------------

используйте python для сценария действия:

def action1(o):
    o.f1()
    o.f2()

В c ++ используйте интерпретатор для запуска этого сценария, найдите действие1 и вызовите его с помощью PyObject, который преобразует объект c ++. На самом деле, я не выставлял f1 () и f2 () для python, я просто использую python для перегруппировки определения действия, все функции выполняются двоичным кодом C ++. Обратите внимание, что мне не нужно давать определение f1 () и f2 () в python.

Проблема в том, как я выставляю глобальные функции? например:

def action2():
    gf1()
    gf2()

boost :: python может предоставлять функцию, но она отличается, ей нужно скомпилировать файл DLL, а main () принадлежит скрипту python. Конечно, я могу сделать глобальные функции статическим членом класса, но я просто хочу знать. Обратите внимание, что я ДОЛЖЕН дать определение gf1 () и gf2 () в python.

Jython может сделать это легко: просто импортируйте Xxx в код Python и вызовите Xxx.gf1 () в порядке. Но как я определяю gf1 () в Python в Cython? Это своего рода расширение, но для расширения требуется предварительная компиляция Xxx.Кажется, единственный способ - превратить gf () в класс?

6
задан jean 1 February 2012 в 01:39
поделиться