discuss-gnuradio
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Discuss-gnuradio] Question on how to derive a class in an out-of-tr


From: Martin Braun
Subject: Re: [Discuss-gnuradio] Question on how to derive a class in an out-of-tree module based on a gnuradio class
Date: Tue, 07 Oct 2014 11:16:32 +0200
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.6.0

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
>> address@hidden
>> https://lists.gnu.org/mailman/listinfo/discuss-gnuradio
> 
> 
> 
> _______________________________________________
> Discuss-gnuradio mailing list
> address@hidden
> https://lists.gnu.org/mailman/listinfo/discuss-gnuradio
> 




reply via email to

[Prev in Thread] Current Thread [Next in Thread]