On 10/07/2014 09:54 AM, Marcus Müller wrote: > This looks like a linker error. > In your main CMakeList.txt, you have to add DIGITAL to the line containing > > set(GR_REQUIRED_COMPONENTS ...
The OP mentioned he'd already done that, but I still agree with your suspicion. It's actually more likely some SWIG/linking issue. Are you referencing the correct header files in your SWIG file? M > If you already have that, sometimes make clean helps, when for some > reason linker/ccache/black magic involving CMake failed. > > Greetings, > Marcus > > On 07.10.2014 03:58, Zhe Feng wrote: >> 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 "<stdin>", line 1, in <module> >> File "/usr/local/lib/python2.7/dist-packages/my_oot/__init__.py", line >> 45, in <module> >> from my_oot_swig import * >> File "/usr/local/lib/python2.7/dist-packages/my_oot/my_oot_cdma.py", line >> 26, in <module> >> _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 >> >> >> >> _______________________________________________ >> Discuss-gnuradio mailing list >> Discuss-gnuradio@gnu.org >> https://lists.gnu.org/mailman/listinfo/discuss-gnuradio > > > > _______________________________________________ > Discuss-gnuradio mailing list > Discuss-gnuradio@gnu.org > https://lists.gnu.org/mailman/listinfo/discuss-gnuradio > _______________________________________________ Discuss-gnuradio mailing list Discuss-gnuradio@gnu.org https://lists.gnu.org/mailman/listinfo/discuss-gnuradio