Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
Здесь думаю важен порядок подключения линкера -Wl. Кто знает точнее напишите про это в коментах, дополню ответ.
Всё довольно просто — символы ищутся в один проход и все неиспользуемые выбрасываются. Если поставить simple.c в конец, то получается, что использование символа Py_Initialize() линкер увидит после того, как посмотрит в библиотеки питона, все символы которых будут к этому моменту выброшены (потому что не использовались).
В общем, порядок передачи аргументов важен. Есть способ решить эту проблему через флаги -Wl,--start-group и -Wl,--eng-group, но в данном случае это излишне.
Проблема с которой я столкнулся и не смог пока понять
pVal = PyDict_GetItemString(pDict, (const char *) val);
...
Py_XDECREF(pVal);
PyObject* PyDict_GetItemString(PyObject *p, const char *key)
Return value: Borrowed reference.
When a function passes ownership of a reference on to its caller, the caller is said to receive a new reference. When no ownership is transferred, the caller is said to borrow the reference. Nothing needs to be done for a borrowed reference.
Так обратно тоже надо,
а потом из низкоуровнего C забрать значение 'b' у высокоуровневого питона и что-то с ним дальше делать?
парсинг текста и складирование в БДчто есть высокоуровневая задача и С там вообще никаким боком не нужен. А можно подетальнее что и как там делалось? в наше цивилизованное время пора задуматься о распаралеливании париснга и прочих операций с текстом.
. Данные приходят в виде псевдотаблицоткуда приходят, почему в таком виде? Вроде бы в общепринятых форматах типа JSON или YAML прямое отображение в ОО представление и в БД, зачем какой то левый формат юзать
Python из C (C API)