В моем приложении есть несколько событий, каждое событие может иметь несколько действий. Эти действия реализованы на 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 () в класс?