![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
похмелье |
|
||||||||||||||||||||
Новичок Профиль Группа: Участник Сообщений: 15 Регистрация: 19.2.2009 Репутация: нет Всего: 1 |
Захотелось использовать библиотеку на 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", она расположена раньше определения функции, да и компилятор не ругал. В общем, прошу помощи, любые идеи приветствуются. |
||||||||||||||||||||
|
|||||||||||||||||||||
похмелье |
|
|||
Новичок Профиль Группа: Участник Сообщений: 15 Регистрация: 19.2.2009 Репутация: нет Всего: 1 |
Разобрался, дело во флаге -ccygwin в
с флагом -cmingw32 всё работает. Не совсем понятно почему, правда… У cygwin зависимость от cygwin1.dll остаётся, но он в папке лежит, да ругани на недостающую dll, как в этом случае бывает, не наблюдается. p.s. Только не думайте что я тему создал как только вопрос возник , третий день уже гуглю и вчитываюсь в доки. |
|||
|
||||
![]() ![]() ![]() |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Python: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |