0

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

    $ ldd -r -d _rf24.so 2>&1|grep RF24
    未定义符号:_ZN4RF24C1Ehh (./_rf24.so)

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

蟒蛇异常:


        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

4

1 回答 1

0

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

于 2016-06-02T14:36:51.497 回答