繁体   English   中英

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

[英]Missing / wrong signature whan converting c++ library to python using SWIG

我正在尝试使用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

问题解决了! 使用c ++ filt之后,我发现lib中的一个构造函数未定义,将其删除后问题得以解决

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM