Форум русскоязычного сообщества Ubuntu


Получить помощь и пообщаться с другими пользователями Ubuntu можно
на irc канале #ubuntu-ru в сети Freenode
и в Jabber конференции ubuntu@conference.jabber.ru

Автор Тема: Python ctype не грузит библиотеку  (Прочитано 1399 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн iamkisly

  • Автор темы
  • Любитель
  • *
  • Сообщений: 93
  • это я в 10 лет назад
    • Просмотр профиля
    • Электроника как хобби
Python ctype не грузит библиотеку
« : 24 Августа 2014, 02:35:35 »
В общем есть сторонняя shared lib (so). хотел подключить ее к своему python скрипту с помощью ctypes. А тут раз и шиш  :-[

Код: ("python") [Выделить]
>>> from ctypes import cdll
>>> stdcpp=cdll.LoadLibrary('/home/me/workspace/libLName_d.so.1.0.1')
Цитировать
Traceback (most recent call last):
  File "<pyshell#5>", line 1, in <module>
    stdcpp=cdll.LoadLibrary('/home/me/workspace/libName_d.so.1.0.1')
  File "/usr/lib/python2.7/ctypes/__init__.py", line 443, in LoadLibrary
    return self._dlltype(name)
  File "/usr/lib/python2.7/ctypes/__init__.py", line 365, in __init__
    self._handle = _dlopen(self._name, mode)
OSError: /home/me/workspace/libName_d.so.1.0.1: undefined symbol: _ZTVN10__cxxabiv120__si_class_type_infoE

В общем ахтунг ! Питониш партизаниш!!  ;D

Исходники либы есть, написана на c++. По умолчанию автоский Makefile собирает ее как статическую (ar -> .a), править его не стал. Просто в папке с собранными ".o" собрал их в .so.  Как я понимаю ctypes не работает с c++ ( или работает ? ). А переписывать ее - ололо, как долго.. тем более, что квалификация моя явно проигрывает автору. Какие есть наименее болезненные методы подтянуть нужную библиотеку в python коде ? Или я криво собрал .so (
Заранее спасибо.
« Последнее редактирование: 24 Августа 2014, 02:38:21 от kisly »

Оффлайн Jack Sparrow

  • Активист
  • *
  • Сообщений: 641
    • Просмотр профиля
Re: Python ctype не грузит библиотеку
« Ответ #1 : 24 Августа 2014, 11:18:18 »
Вот здесь что-то подобное описывают.
Linux is only free if your time has no value (c) Jamie Zawinski

Оффлайн iamkisly

  • Автор темы
  • Любитель
  • *
  • Сообщений: 93
  • это я в 10 лет назад
    • Просмотр профиля
    • Электроника как хобби
Re: Python ctype не грузит библиотеку
« Ответ #2 : 26 Августа 2014, 01:53:25 »
хмм.. смотрю пример, и не догоняю  :(

допустим у меня есть декларация (кусок). Я не понимаю, как задекларировать в extern "C" и вызвать потом в python? Сможете привести листинг ?

class My_Init: public MyPacket
{
public:

My_Init();
My_Init( const unsigned char *bytes, unsigned int length );

protected:
void _initMembers();

public:
virtual bool         decodeXOR();
static bool          MyMod( unsigned char *data );
unsigned int  Version[4];
}


Оффлайн Jack Sparrow

  • Активист
  • *
  • Сообщений: 641
    • Просмотр профиля
Re: Python ctype не грузит библиотеку
« Ответ #3 : 27 Августа 2014, 10:32:27 »
Не, сам никогда не делал, но самому интересно. Вот тут, например, хорошо и по-русски описываются способы взаимодействия Python с C и другими программами.
Linux is only free if your time has no value (c) Jamie Zawinski

 

Страница сгенерирована за 0.11 секунд. Запросов: 25.