I have already made some OOT blocks, so I should have the basic process down, but I can't find out why using any blocks in a hier block with X in the name, which indicates an input, output, and/or parameter can be of multiple types, results in undefined references to the make functions.
I have tried using the not_bb block in gnuradio/blocks, diff_encoder_bb in gnuradio/digital, and freq_xlating_fir_filter_ccf in gnuradio/filter. I can use these blocks in python without incident, but making a hier block using those types of blocks is not working. I run the built in default tests, and they all fail because of an undefined references to code in gnuradio, which I have already built from source.
For example, this is from the test logs:
undefined symbol: _ZN2gr6filter27freq_xlating_fir_filter_ccf4makeEiRKSt6vectorIfSaIfEEdd
After using c++filt:
gr::filter::freq_xlating_fir_filter_ccf::make(int, std::vector<float, std::allocator<float> > const&, double, double)
This is the entire contents of a source file I've made trying to resolve this issue:
#include "test_xx_impl.h"
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
#include <gnuradio/filter/freq_xlating_fir_filter_ccf.h>
#include <gnuradio/io_signature.h>
namespace gr {
namespace howto {
test_xx::sptr test_xx::make() {
return gnuradio::get_initial_sptr(new test_xx_impl());
}
test_xx_impl::test_xx_impl()
: gr::hier_block2("test_xx", gr::io_signature::make(1, 1, sizeof(uint8_t)),
gr::io_signature::make(1, 1, sizeof(uint8_t))) {
filter::freq_xlating_fir_filter_ccf::sptr testing =
filter::freq_xlating_fir_filter_ccf::make(1, {1}, 10000, 1000000);
}
41
42 } /* namespace howto */
43 } /* namespace gr */
Regards,