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

Работает, в принципе корректно.
Но есть один баг: когда возваращается символьный массив в количстве символов, кратным восьми, то выглядит он примерно так: “сссссссс?”. где “с” - символ, реально содержащийся в массиве, “?” - какой-то левый символ. Причем в массивах не кратных восьми все нормально. И главное, - под FreeBSD такого нет, только под виндой
koder
Я так понимаю что Ты чистый С/C++-ный модуль swig-om обернул.
А что возвращает функция (char *) или std::string?
Заголовок кинь сюда.
Александр
koder
Я так понимаю что Ты чистый С/C++-ный модуль swig-om обернул.
А что возвращает функция (char *) или std::string?
Заголовок кинь сюда.
Заголовок класса на С++?
Функции класса у меня расписаны в отдельном *.сс
koder
Заголовок функции при вызове которой сбоит.
Александр
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>(#))
// где # - размер
}
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB