Hi, I did that in gr-ieee802-11 and IIRC I had to define GR_API in the swig config
https://github.com/bastibl/gr-ieee802-11/blob/master/swig/ieee802_11_swig.i#L18 Hope that helps, Bastian On 07 Oct 2014, at 11:27, Marcus Müller <mar...@hostalia.de> wrote: > -----BEGIN PGP SIGNED MESSAGE----- > Hash: SHA1 > > .... I should pay closer attention; sorry! > > On 07.10.2014 11:16, Martin Braun wrote: >> 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 >>>> >>>> >>>> > -- Dipl.-Inform. Bastian Bloessl Distributed Embedded Systems Group University of Paderborn, Germany http://www.ccs-labs.org/~bloessl/ _______________________________________________ Discuss-gnuradio mailing list Discuss-gnuradio@gnu.org https://lists.gnu.org/mailman/listinfo/discuss-gnuradio