| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Python: Общие вопросы > swig/cygwin/python |
| Автор: похмелье 26.2.2013, 14:51 | ||||||||||||||||||||
| Захотелось использовать библиотеку на c++ в любимом питоне. После первой сборки пользовался только функциями и примитивными типами, проблем не было. Потом потребовалось использовать функции, которые принимают в качестве аргумента структуры. Ну, думаю, в документации к swig написано, что тут всё просто. Так и оказалось, создаёшь структуру как любой объект в питоне и готово. Но после запуска оказалось, что именно в момент создания структуры всё "зависает", питон "работает" со 100% загрузкой процессора. Я не отчаялся, подумал что библиотека сложная и надо сделать простой пример, который я хочу обсудить далее. Итак, я хочу воспользоваться сишной структурой из питона. У меня в наличии: yoba.h (собственно, описание структуры)
yoba.i (файл для swig, тут всё просто)
setup.py (файл для создания модуля при помощи distutils)
Собираем модуль командой
В консоли это выглядит следующим образом:
Без предупреждений и ошибок, что не может не радовать, создаются yoba_wrap.cpp, yoba.py, _yoba.pyd. При попытке выполнить нехитрый код происходит зависание:
Я полез в yoba.py и нашёл класс foo():
Зависание происходит, как и следует ожидать, на строке
Делать нечего, ищем new_foo в yoba_wrap.cpp:
Слегка меняя эту функцию с помощью "return NULL" мне удалось выяснить, что зависание происходит на строке:
Ну, вот собственно и к вопросу я подошёл. Что не так? В yoba_wrap.cpp есть строка #include "yoba.h", она расположена раньше определения функции, да и компилятор не ругал. В общем, прошу помощи, любые идеи приветствуются. |
| Автор: похмелье 26.2.2013, 15:25 | ||
Разобрался, дело во флаге -ccygwin в
с флагом -cmingw32 всё работает. Не совсем понятно почему, правда… У cygwin зависимость от cygwin1.dll остаётся, но он в папке лежит, да ругани на недостающую dll, как в этом случае бывает, не наблюдается. p.s. Только не думайте что я тему создал как только вопрос возник , третий день уже гуглю и вчитываюсь в доки. |