Hi all, I found the problem.
In my OOT block, I try to use mmse_fir_interpolator. Thus, in the my_block_impl.h file I use the following code to include the fir interpolator: *#include <gnuradio/filter/mmse_fir_interpolator_ff.h>* But when I run ctest for my block, I got the following error: *ImportError: /home/suli/gr-ctia802_15_4/build/lib/libgnuradio-ctia802_15_4.so: undefined symbol: _ZN2gr6filter24mmse_fir_interpolator_ffC1Ev* where ctia802_15_4 is my OOT module name. It seems that this fir filter is not correctly included. Anyone can tell me how to fix it? Thanks in advance. Best regards, Su Li 2015-05-14 14:33 GMT+02:00 Su Li <liis...@gmail.com>: > Hi Peter, > > Thanks for your reply and suggestions. > > I checked all the 4 files. I changed the original module and block names > of build-in block into my module and block names. But unfortunately, the > error still exists. > > Could it be possibly because the build-in block, in my case > "clock_recovery_mm_ff" block, has some special dependency which is included > in the code of the module but not in the code of the block. > > The type of "clock_recovery_mm_ff" block is abnormal. It is just block, > not gr::block nor gr::sync_block as mentioned in the OOT tutorial . Here is > the code of declaration of this block in *.h file in "include" folder. > > class DIGITAL_API clock_recovery_mm_ff : virtual public block > > In my code, I change it into > > class MY_MODULE_API my_block : virtual public block > > Thank you for your reply again. > > Best regards, > > Su Li > > > > > 2015-05-13 20:36 GMT+02:00 Peter Mathys <mat...@colorado.edu>: > >> I've had a similar problem when I generated files for my own module >> using the gr_modtool and then copied some existing code by replacing the >> file(s) that gr_modtool generates. It turns out I had overlooked that the >> new "my_block" name needs to be changed in several places, like the >> namespace declaration, the #include compiler directive, and the conditional >> #ifndef INCLUDED ... directives. Once I updated that correctly the >> AttributeError got resolved. >> >> -Peter- >> >> >> >> On 5/13/2015 10:38 AM, Su Li wrote: >> >> Dear All, >> >> I am trying to make an out of tree module by following the tutorial on >> Gnu radio website. I can write simple blocks in C++, compile it and install >> it to it usable in Gnuradio company. >> >> But for some complex block, I want to implement them based on the >> gnuradio build-in blocks, for example, clock_recovery_mm_ff. So I make a >> new block in my out-of-tree module and try to first "copy" the build-in >> block into my out-of-tree module. >> >> I changed the following 4 files in my OOT module to match the >> corresponding files of the build-in block: >> >> lib/my_block_impl.cc >> lib/my_block_impl.h >> include/my_block.h >> grc/my_block.xml >> >> In each file, I changed all the "clock_recovery_mm_ff" into "my_block". >> >> I can successfully make and install the block without error and >> warring. But when I try to run the grc graph, an error happens. >> >> AttributeError: 'module' object has no attribute 'my_block'. >> >> Anyone can tell me what I should do to correct this error? Is there any >> other files I should change? >> >> When I make simple blocks by myself, I only change this 4 files and it >> works. >> >> Best regards, >> >> Su Li >> >> >> _______________________________________________ >> Discuss-gnuradio mailing >> listDiscuss-gnuradio@gnu.orghttps://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