Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 9, 2006 19:42:47

Александр
От:
Зарегистрирован: 2006-04-14
Сообщения: 16
Репутация: +  0  -
Профиль   Отправить e-mail  

Код на С++ в программе на Питоне

Че-то фору не работал, говорят, что переезжают куда-то.
В общем поколупался я со своим кодом:
Если функция объявлена не как ststic, библиотека компилится но в процессе выполнения программа рушится
Если функция объявлена как ststic, то она не воспринимает переменные объявленные внутри класса



Офлайн

#2 Окт. 9, 2006 20:16:18

koder
От:
Зарегистрирован: 2006-09-29
Сообщения: 95
Репутация: +  0  -
Профиль   Отправить e-mail  

Код на С++ в программе на Питоне

Александр
Если функция объявлена не как ststic, библиотека компилится но в процессе выполнения программа рушится
Если функция объявлена как ststic, то она не воспринимает переменные объявленные внутри класса
1)Я подозреваю что начать надо с доки по плюсам.
Если функция обявлена как static то она не имеет переменной this а соответственно не может обращатся
к нестатичестким членам класса в т.ч. и переменным. static - аналог питоновского classmethod/staticmethod.
(это я так на всякий случай если не знаеш).
2)Скорее всего ошибка связанна не с биндингами а с самой ф-цией.Но без сырцов это трудно сказать.
Сырцы можно под форточкой забилдить в студии и замечательно посмотреть в чем ошибка
(ну или в линухе под gdb - мне както первое удобней). Я ж надеюсь ты там NDA не подписывал ;).
Если не подписывал то смотри мой пост выше.



Отредактировано (Окт. 9, 2006 20:17:14)

Офлайн

#3 Окт. 20, 2006 12:36:21

Александр
От:
Зарегистрирован: 2006-04-14
Сообщения: 16
Репутация: +  0  -
Профиль   Отправить e-mail  

Код на С++ в программе на Питоне

В общем, разобрался я с этим, правда затратным путем - swig

Работает, в принципе корректно.
Но есть один баг: когда возваращается символьный массив в количстве символов, кратным восьми, то выглядит он примерно так: “сссссссс?”. где “с” - символ, реально содержащийся в массиве, “?” - какой-то левый символ. Причем в массивах не кратных восьми все нормально. И главное, - под FreeBSD такого нет, только под виндой



Офлайн

#4 Окт. 20, 2006 12:46:14

koder
От:
Зарегистрирован: 2006-09-29
Сообщения: 95
Репутация: +  0  -
Профиль   Отправить e-mail  

Код на С++ в программе на Питоне

Я так понимаю что Ты чистый С/C++-ный модуль swig-om обернул.
А что возвращает функция (char *) или std::string?
Заголовок кинь сюда.



Офлайн

#5 Окт. 26, 2006 13:36:32

Александр
От:
Зарегистрирован: 2006-04-14
Сообщения: 16
Репутация: +  0  -
Профиль   Отправить e-mail  

Код на С++ в программе на Питоне

koder
Я так понимаю что Ты чистый С/C++-ный модуль swig-om обернул.
А что возвращает функция (char *) или std::string?
Заголовок кинь сюда.
Заголовок класса на С++?
Функции класса у меня расписаны в отдельном *.сс



Офлайн

#6 Окт. 26, 2006 15:31:25

koder
От:
Зарегистрирован: 2006-09-29
Сообщения: 95
Репутация: +  0  -
Профиль   Отправить e-mail  

Код на С++ в программе на Питоне

Заголовок функции при вызове которой сбоит.



Офлайн

#7 Окт. 30, 2006 10:15:43

Александр
От:
Зарегистрирован: 2006-04-14
Сообщения: 16
Репутация: +  0  -
Профиль   Отправить e-mail  

Код на С++ в программе на Питоне

koder
Заголовок функции при вызове которой сбоит.
typedef std::vector<char*> Record

class MyClass {
/* */
std::vector<Record>* Table;
public:
/* */
char* Room(int, int); // Заголовок функции
};

А вот код функции:
char* MyClass::Room(int r, int c)
{
return (*Table); // Table, как это должно быть понятно, размещен в свободной памяти (new std::vector<Record>(#))
// где # - размер
}



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version