Co chcę zrobić, to naprzeciwko tego, co większość ludzi chce zrobić: mam bibliotekę napisaną w Pythonie i chcę ją udostępnić C (i być może innym językom) .Powiąż bibliotekę Pythona TO C
wiem, że typowa odpowiedź na to jest za pomocą biblioteki Pythona do C, to jest:
#include <Python.h>
int
main(int argc, char *argv[])
{
Py_Initialize();
PyRun_SimpleString("from time import time,ctime\n"
"print 'Today is',ctime(time())\n");
Py_Finalize();
return 0;
}
(źródło: http://docs.python.org/extending/embedding.html#very-high-level-embedding)
to jednak wydaje się mniej niż optymalna dla mnie jest:
- jest brzydki
- to właśnie dla C
To, czego chcę, to sposób na powiązanie mojej biblioteki z wieloma językami, w tym z C. Nie interesuje mnie automatyczne generowanie opakowania: moja biblioteka jest dość prosta, więc mogę napisać kod z klejem.
W tej chwili jedynym rozwiązaniem, które wymyśliłem, jest użycie kodu podobnego do powyższego w celu związania mojej biblioteki z C. Następnie użyj SWIG, aby powiązać bibliotekę C z innymi językami.
Czy jest lepszy?
Cóż, nie potrzebuję niczego tak fantazyjnego (nie teraz przynajmniej) jako biblioteki działającej jako demon. Więc myślę, że pójdę ręcznie pisząc bibliotekę C, która łączy się z pythona; następnie wykonam wiązania za pomocą SWIG do innych języków. – boyska