2013-06-28 1 views
0

Я пытаюсь использовать C++ LIB с питоном, используя SWIG, моя проблема заключается в том, что символ основной класс отсутствует,
Missing/неправильно подпись Whan преобразования C++ библиотека для Python, используя SWIG

 

    $ ldd -r -d _rf24.so 2>&1|grep RF24 
    undefined symbol: _ZN4RF24C1Ehh (./_rf24.so) 

    $ objdump -t librf24-bcm.so.1.0 |grep RF24 
    . 
    . 
    . 
    000032cc g  F .text 00000044    _ZN4RF24C1Ehhj 
    000032cc g  F .text 00000044    _ZN4RF24C2Ehhj 
    . 
    . 
    . 

питон исключение :

 

     ImportError: ./_rf24.so: undefined symbol: _ZN4RF24C1Ehh 
 

Я попытался с помощью Lib OBJS из исходного файла Makefile или пытался собрать их с некоторыми флагами, но результат тот же строят линии:

 

    $ gcc -c RF24_wrap.cxx -I/usr/include/python2.7 
    $ gcc -lstdc++ -shared bcm2835.o RF24.o RF24_wrap.o -o _rf24.so 

RF24.i (файл SWIG):

 

    %module rf24 
    %{ 
    #include "RF24.h" 
    %} 

    %include "RF24.h" 
    //%include "bcm2835.h" 
    %include "carrays.i" 
    %array_class(char, byteArray); 
 

RF24.h (соответствующая часть заголовочного файла класса):



     . 
     . 
     . 
     // bla bla bla enums... 

     class RF24 
     { 
     private: 
     // bla bla bla 

     protected: 
     // bla bla bla 

     public: 
      RF24(uint8_t _cepin, uint8_t _cspin); 
      RF24(uint8_t _cepin, uint8_t _cspin, uint32_t spispeed) 

     //bla bla bla 
 
+0

Когда вы найдете свое собственное решение, отправьте его как ответ, а не отредактируйте вопрос. – Flexo

ответ

0

проблема решена! После использования C++-фильтра я обнаружил, что один из конструкторов в lib не был определен, после его устранения была решена проблема