Dear all,
I’m trying to derive a packet_header2 class in my own OOT module based
on
gr::digital::packet_header_default. I followed the way in
packet_heade_ofdm of gr-digital and made packet_header2.h and
packet_header2.cc in my own OOT module.
But when I tried to import my_oot in python, it returned an undefined
symbol error like this:
Traceback (most recent call last):
File “”, line 1, in
File “/usr/local/lib/python2.7/dist-packages/my_oot/init.py”, line
45, in
from my_oot_swig import *
File “/usr/local/lib/python2.7/dist-packages/my_oot/my_oot_cdma.py”,
line
26, in
_my_oot_swig = swig_import_helper()
File “/usr/local/lib/python2.7/dist-packages/cdma/cdma_swig.py”, line
22,
in swig_import_helper
_mod = imp.load_module(‘_my_oot_swig’, fp, pathname, description)
ImportError: /usr/local/lib/libgnuradio-my_oot.so: undefined symbol:
_ZTIN2gr7digital21packet_header_defaultE
I searched the list and found a previous answered question below
http://gnuradio.4.n7.nabble.com/so-undefined-symbol-ZN2gr6blocks12count-bits16E-td46270.html
where Marcus suggested editing the CMakeList.txt files by adding the
module
I needed. So I added
set(GR_REQUIRED_COMPONENTS RUNTIME DIGITAL) in CMakeLists.txt.
and then. This above error disappeared when I import my_oot again in
python. But this problem isn’t solved. I tried to access some functions
of
packet_header_default like formatter and base, it returned me an
AtrributeError like this:
AttributeError: ‘packet_header2_sptr’ object has no attribute
‘formatter’,
which means the packet_header2 wasn’t really a derived class of
packet_header_default.
I confirmed my conjecture by checking the
/usr/local/lib/python2.7/dist-packages/my_oot/my_oot_swig.py where the
classes are stored in python. I found that the class packet_header2 is
defined as class packet_header2(object). So the packet_header2 isn’t
installed as a derived class of gr::digital::packet_header_default.
what
I expected was packet_header2(gr::digital::packet_header_default).
So I’m asking you that how to correctly derive my class (eg:
packet_header2) in my own oot module based on a class (eg:
packet_header_default) in an existing module (eg: gr-digital)?
My packet_header2.h and packet_header2.cc are attached for your
reference.
Thanks!
Best,
Zhe
–
Zhe F.
Electrical Engineering: System
University of Michigan Ann Arbor