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