使用SWIG将c++库转换为python时缺少/错误的签名

2024-09-29 23:29:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我尝试使用Python使用CIS+C++来使用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
    .
    .
    .

python异常:

^{pr2}$

我尝试使用原始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

Tags: textsoincludegrepclassswiggccwrap

热门问题