使用SWIG将c ++库转换为python时丢失/错误签名

时间:2013-06-28 10:44:25

标签: c++ python swig porting symbols

我正在尝试使用SWIG使用C ++ lib和python, 我的问题是缺少主类符号,


    $ 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
    .
    .
    .

python异常:


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

我尝试使用原始Makefile中的lib objs或尝试用一些标志编译它们但结果是一样的 构建线:


    $ 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

1 个答案:

答案 0 :(得分:0)

问题解决了!使用c ++ filt后,我发现lib中的一个构造函数没有定义,删除后问题解决了