Utwierdzam Pythona w bibliotece C++, którą robię. Chciałbym, aby użytkownicy mogli przekazywać funkcje C w postaci wskaźników funkcji PyObject* (fpFunc*)(PyObject*,PyObject*);
, aby móc korzystać z tych funkcji we wbudowanym języku Python.Zbuduj PyObject * z funkcji C?
Mam więc wskaźnik funkcji i wiem, że jest możliwe, aby umieścić tę funkcję jako metoda A modułu używając PyMethodDef
struct i przekazaniem go do Py_InitModule("module", ModMethods);
a tym samym uzyskanie PyObject* module
które można łatwo chwycić z funkcji.
Ale naprawdę doceniłbym możliwość tworzenia tej funkcji w locie bez konieczności ponownego tworzenia kolejnego modułu za każdym razem.
Zajrzałem do dokumentacji Pythona i niektórych nagłówków w Pythonie, aby myśleć o hackowatym sposobie robienia tego bez prawdziwego sukcesu ... ale zastanawiam się, czy istnieje bardziej konwencjonalny sposób robienia tego.
Z tego co zrozumiałem, każda funkcja należy do modułu, nawet __builtin__
, więc domyślam się, że wymagałbym przynajmniej modułu.
Każdy pomysł, jak to osiągnąć?
Nie jest dla mnie jasne, co masz na myśli. Dlaczego używasz wskaźnika funkcji? Kto to ustawia? –
Tworzę bibliotekę C++, która osadza Pythona. Używam wskaźnika funkcji, ponieważ jest on przydatny do przekazania. (edytowałem mój post) – Manux